C50108
  • 2019/0801/轉職成功路途開始
  • 自學心得與此網站使用方式
  • 行事曆&課程大綱
  • 2019/0224/自我檢視
  • 雜記
    • 2019/0103/雜記
    • 2019/0410/作品集建構
    • 2019/0429/職訓局書單
    • 2019/0317/自我檢視
    • 2019/0316/陪玄松去高車討論&環境圖流程圖大神們line討論
    • 2019/0305/Gitbook使用方法
  • 2018/10XX/轉職心路歷程
  • 職訓局里程碑
    • 201901
      • 2019/0103/行動商務系統設計與開發,職訓局報到
      • 2019/0104/正式開課日&行動商務課程簡介
      • 2019/0108/資料庫理論/Access&WEB開發簡介
      • 2019/0109/資料庫資料型態屬性&HTMLtag
      • 2019/0110/計概基礎概念
      • 2019/0111/HTML表格table&form表單_post/get&iframe
      • 2019/0114/計&網概概念&網路層概念
      • 2019/0115/資料庫Access運算值&CSS簡介&在職班補充
      • 2019/0116/Access比較/邏輯運算&CSS_在職班補充+選擇器+Box model
      • 2019/0117/資訊系統架構&網路層
      • 2019/0118/資料庫正規化
      • 2019/0121/計概IT分工&資料庫正規化
      • 2019/0122/網路層&CSS父子容器切版
      • 2019/0123/Access資料庫關聯&CSS position&偵錯
      • 2019/0124/C#宣告、指定運算子
      • 2019/0125/VM虛擬機_基礎介紹
      • 2019/0128/VM虛擬機架設_虛擬網卡設定&伺服器權限設置
      • 2019/0129/Wireshark查詢網路層&資料庫物件導向
      • 2019/0130/ERmod雞爪圖&C#if、for時間複雜度
      • 2019/0131/C#流程控制&變數型別
    • 201902
      • 2019/0201/系統分析與設計_資料庫ERmod&c#Homework
      • 2019/0211/ASP.NET_Webforms&物件命名空間
      • 2019/0212/定址&網路遮罩
      • 2019/0213/SQLSeverM.S.介紹&AspWebforms表單控制項
      • 2019/0214/網概乙太網路&網路安全
      • 2019/0215/Pre Javascript 基礎 & 在職班補充
      • 2019/0218/TSQL基本指令&ASP.net左右置換表格/驗證傳值
      • 2019/0219/Javascript終極密碼&musicplay&asp.net驗證器
      • 2019/0220/SS基本語法&網概line機器人
      • 2019/0221/前端Javascript musicplay、內聚力耦合率
      • 2019/0222/前端Javascript musicplay、內聚力耦合率&伺服器權限
      • 2019/0223/SqlServerHomework&第一次專案報告
      • 2019/0225/SS合併查詢&ASP.NET驗證器
      • 2019/0226/伺服器ntfs安全性權限/共用權限
      • 2019/0227/Javascript_music_play_end&ASP.net串聯SQL(datasource就是拿來串SQLServer的)
    • 201903
      • 2019/0304/SS集合運算/子查詢/exists&asp.net GridView 事件 OnRowDataBound
      • 2019/0305/SS查詢式end&ASP.NET_Gridview_自訂樣式分頁
      • 2019/0306/Javascript musicplay_really_end
      • 2019/0307/前端HTML5鑲嵌字型&伺服器網域概念
      • 2019/0308/Android Studio_基礎概念&開發環境建置
      • 2019/0311/胡中興 工業4.0講習
      • 2019/0312/安卓系統_開發基礎介紹
      • 2019/0313/安卓工作室_基礎/布局內元件
      • 2019/0314/Asp.net鏈結資料庫-查詢
      • 2019/0315/SQS DML&第二次專案報告
      • 2019/0318/SQL DDL & 伺服器 自學基礎
      • 2019/0319/Android Studio_布局內元件&佈局規劃元件
      • 2019/0320/SQL檢視表&tsql基礎&Asp.net_Gridview
      • 2019/0321/TSQL&TDM&ASP.NET_Datalist
      • 2019/0322/DOM&JQ基礎&系統分析設計PPT&在職班補充
      • 2019/0325/TMD&Asp.net上傳圖片/產生QRCode
      • 2019/0326/SQLServer_預存程序+函數&Asp.net_Webforms半自動鏈結資料庫與自動化更新
      • 2019/0327/安卓工作室_佈局規劃元件
      • 2019/0328/jQuery選擇器應用&Ajax導讀+應用&asp.net串sserver_註冊帳號功能
      • 2019/0329/ADDS伺服器架設&第三次專題報告
    • 201904
      • 2019/0401/SQL觸發程序&Asp.net自動寄信&認證信
      • 2019/0402/前端作業四-jQ應用轉換樣式&ASP.NET_FormView控制項-會員資料維護實例
      • 2019/0403/JQ事件動畫&股市&Usecase
      • 2019/0408/安卓工作室_元件/布局基本end
      • 2019/0409/安卓工作室-物件導向事件驅動實作+Homework1&2
      • 2019/0410/上午小組討論-作品集自習&Visual studio webform+MVC範本
      • 2019/0411/安卓工作室-UI觸發委派函式與控制物件
      • 2019/0412/JQ動畫實做(寶可夢遊戲開場)&第四次專題報告
      • 2019/0415/前端JQ-Ajax+JSON&後端ADO建置、主板頁面概念控制項、Bootstrap演示
      • 2019/0416/安卓工作室UI控件案例結束、IDE Eclipse_Java物件導向基礎
      • 2019/0417/伺服器網域ADDNS&416LINE討論
      • 2019/0418/SQL指標、索引&Use cace
      • 2019/0419/主頁、Webform ADO.NET Entity Fromwork 增刪修實作&第五次專題報告
      • 2019/0423/Java基礎(型別/溢位/自動強制型別轉換/鑄造物件/串流/)&I/O物件用法(底層/較不底層)
      • 2019/0424/Bootstrap_RWD基礎/應用&Asp.Net_MVC實作增刪修(修待補)
      • 2019/0425/伺服器IIS安裝&資料匯入與管理
      • 2019/0426/Asp.Net_MVC增刪修實作(補修)&bootstrap – gridsystem– 網格系統&第六次專題報告&全國技能競賽網頁設計
      • 2019/0429/物件導向技術原理方法實作
      • 2019/0430/資料庫設計應用效能調教_SQL all end&ASP.NET_MVC_Controller單元_純C無V無M操作/簡單複雜繫結
    • 201905
      • 2019/0501/內部網站辨識&外部DNS域名/IP+自架DNS伺服器理解
      • 2019/0502/Java語言基礎、物件導向基礎
      • 2019/0503/Asp.net泛型處理常式驗證圖片應用&第七次專題報告Usecase
      • 2017/0506/Bs_FlexBox&Asp.Net_MVC_View+Razor@+Viewbag+helper
      • 2019/0507/Java 物件導向_類別+函式觀念&階段性作業三
      • 2019/0508/Asp.Net_MVC_Model_ADO.NET+Entityframework+LoginMember實作+MVC觀念
      • 2019/0509/Java物件導向(函式)_儲存型態+回傳值+多載+自制+例外處理+this參照+存取+複合
      • 20919/0510/第八次專題報告=功能DEMO
      • 2019/0514/Java_靜態類別+繼承特性
      • 2019/0515/RWD Utility+Card&MVC ViewModel+CRUD(RD)
      • 2019/0516/BS form&驗證+JQ驗證 & MVC_CRUD(CU)
      • 2019/0517/ASP.NET Webform介紹Master page 主頁 & Session 簡介 & 登入login驗證 & 隱碼攻擊injection & 工具箱程式碼片段使用
      • 2019/0520/繼承&存取權特性+java作業四+字符串格式化+多形+抽象類別
      • 2019/0521/抽象類別+介面
      • 2019/0522/Bootstrap Components 元件介紹 + MVC API 概念&實作
      • 2019/0523/IIS IP限制&ASP.NET部屬
      • 2019/0524/WebApi異質程式連線方式&第九次專題報告_循序圖
      • 2019/0528/Bootstrap Components 元件介紹 + MVC 登入驗證 + 商品加入購物車 實作
      • 2019/0529/ASP.NET_MVC購物車訂單功能完成+BootstrapComponents元件介紹
      • 2019/0530/原本是伺服器的課,但拿來做專題。
      • 2019/0531/ASP.NET_WebformAllView物件功能清單&ListView實作&第十次專案報告(完整循序圖)
    • 201906
      • 2019/0603/Bootstrap Components RWD End + ASP.NET_MVC Part2 PhotoSharing CodeFirst & Model 驗證
      • 2019/0604/ASP.NET_MVC Part2 PhotoSharing Controller & Filter & ADO.NET & View@RAZOR Helper
      • 2019/0605/Java介面實作&結束+安卓工作室(整合Layout與Java)Intent意圖&Bundle包裹
      • 2019/0606/第十一次專案報告功能demo+SingnaIR+伺服器作業+端午歌唱比賽
      • 2019/0609/黃大神傳授Visual_Studio&除錯技巧
      • 2019/0610/番外篇 Web Socket 即時連線& 就業前準備與技巧
      • 2019/0611/安卓工作室_(意圖+隱含意圖)資料傳遞+Android生命週期+硬體裝置與應用
      • 2019/0612/WebSockets Notification + MVC Part2 PhotoSharing PartialView & ADO.NET & EntitySQL & VMd
      • 2019/0613/MVC Part2 PhotoSharing ViewModel & ErrorHandle
      • 2019/0614/第十二次專案報告 功能Demo
      • 2019/0618/MVC Part2 PhotoSharing Route & Sitemap & _LayOut & AJAX
      • 2019/0618/RWD在職班_(Javascript_object-oriented programming)
      • 2019/0619/安卓工作室_(硬體裝置與應用)相機操作&GPS+階段性作業6+延伸 ( APP End )
      • 2019/0620/MVC補充C#MS SQL匯入CSV+上傳CSV存入MS SQL
      • 2019/0621/第十三次專案報告 功能Demo
    • 2019/0701/最終專案報告
    • 2019/0702/結訓與家人遊台東預計0708開始找工作自學筆記應該會等工作穩定後繼續開始
  • 自學里程碑
    • 201901
      • 2019/0107/DR
      • 2019/0108/UW
      • 2019/0103/Git
      • 2019/0103/CS
      • 2019/0115/Vscode
      • 2019/0116/JSON&AJAX
      • 2019/0122/卡內基
      • 2019/0126/MBTI
      • 2019/0131/PDP 外在 內在
    • 201902
      • 2019/0217/huli_half Developer
      • 2019/0219/SEO
      • 2019/0219/雪球速讀法
    • 201903
      • 2019/0304/asp、php、jsp、asp.net、net. Framework、asp.net core
      • 2019/0329/網站架站初嘗試
    • 201904
      • 2019/0415/Datatype-Explanation
      • 2019/0416/ASP.NET_Webform&Core&MVC(MVVM/MVP)
    • 201905
      • 2019/0613/開發職訓局共同專案時遇到的問題與解法
      • 2019/0514/ASP.NET SignalR
      • 2019/0514/JS擴展-JQ、React、Vue、Angular...
      • 2019/0514/Sass&Scss
      • 2019/0514/MVC結合Webform
      • 2019/0515/ASP.NET MVC_TempData/ViewData/ViewBag
      • 2019/0522/[自學筆記]海綿體啟蒙??
Powered by GitBook
On this page
  • #前端bootstrap
  • #Utilities bs4 獨立出來的通用類別
  • ##display
  • ##CSS3 Flex Box 相對於 gridsystem是另外一種概念
  • ##補充觀念
  • #下午MVC 單元 View 上次講 C
  • 範例 夜市網站結合googlemap
  • 首先建置簡單的m環境
  • ##談view
  • ###補充: 404
  • ##Razor撰寫習慣
  • ##ViewBag
  • ##Helper class
  • ##卡片系統thumbnail
  • ##最後老師邏輯步驟

Was this helpful?

  1. 職訓局里程碑
  2. 201905

2017/0506/Bs_FlexBox&Asp.Net_MVC_View+Razor@+Viewbag+helper

Bootstrap_Utilities+Display+HTMLHelper+404

#前端bootstrap

###前期提要gridsystem &

今天會講的為以下

Bs4相對於3的大特色

#Utilities bs4 獨立出來的通用類別

框架為了某個功能做特定class

通用 ( 每個標籤都適用

Bs 3 可以達到相同的功能 但分類不太一樣

Bs 3 有提供常用字型 icon 但Bs 4 就沒有

接著講Flexbox bs 3 完全沒有 只有 bs 4 有

Bs 4 庫可以分成三類 看需求去link ( 上一次有截圖官網有

全部 ui 等等…

Reboot 瀏覽器全部洗成類似

Grid 網格系統

Bs3 會套用字的顏色 ( 條背景色自動字的色也有對比色

但 bs4 要自己增加上去 ( 感覺也像 css 了

##display

有類別是 列印才看的到 或是 螢幕看的到 或是不同螢幕不同顯示方式

### 09Utility_Display.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title></title>

    <link href="Content/bootstrap.min.css" rel="stylesheet" />
</head>
<body>

    <div class="bg-danger text-white d-print-none">只有螢幕上看得到</div>
    <div class="bg-warning d-print-block d-none">只有列印時才看得到</div>
    <div class="bg-dark text-warning d-none d-lg-block d-print-block">不同尺寸要隱藏</div>

</body>
</html>

##CSS3 Flex Box 相對於 gridsystem是另外一種概念

CSS3之前沒有對於整個Window的垂直置中

必須要用一個固定大小的盒子下style line-height

行高超高跟box高度一樣就會跑到中間

flexbox

要啟用 flexbox 必須要將display顯示方式為 flex

Bs4只要將類別下 d –flex

然後將內容設置 p-2 ( padding 類別

###其實就是將箱子回歸最原始狀態再去設置

###Flex-column

###Flex-row-reverse

###…

以上都可以分斷點但這裡示範就先不使用

###自動調整內容Justify-content-(end/center/between)

Justify改斷點更有用 用 扛敗的 讓他擁有一堆覆合類別

以上為範例 還有更多 需要時再查

### 10Utility_Flex.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title></title>

    <link href="Content/bootstrap.min.css" rel="stylesheet" />
    <style>
        .col1 {
            background-color: aqua;
        }

        .col2 {
            background-color: #ffd800;
        }

        .col3 {
            background-color: #b6ff00;
        }

        .col5 {
            background-color: #0094ff;
        }

        .col6 {
            background-color: #ff00dc;
        }

        .col7 {
            background-color: #808080;
        }
        .rowheigh{
            height:150px;
        }
    </style>
</head>
<body>
    <div class="container">

        <!--<div style="height:300px;width:600px;background-color:bisque;text-align:center;line-height:300px">
        abcde
    </div>-->

        <h3>水平方向-row</h3>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex flex-row-reverse mb-3">
            <div class="col5 p-2">item 1</div>
            <div class="col6 p-2">item 2</div>
            <div class="col7 p-2">item 3</div>
        </div>
        <h3>垂直方向-column</h3>
        <div class="border border-primary d-flex mb-3 flex-column">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex flex-column-reverse">
            <div class="col5 p-2">item 1</div>
            <div class="col6 p-2">item 2</div>
            <div class="col7 p-2">item 3</div>
        </div>

        <h3>自動調整內容</h3>
        <div class="border border-primary d-flex mb-3 justify-content-start">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>

        <div class="border border-primary d-flex mb-3 justify-content-end">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex mb-3 justify-content-md-center">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex mb-3 justify-content-between flex-md-column">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex mb-3 justify-content-around">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <h3>Item對齊</h3>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-start">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-end">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-center">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-baseline">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2" style="font-size:48pt">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-stretch">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>

        <h3>自身對齊</h3>
        <div class="rowheigh border border-primary d-flex mb-3">
            <div class="col1 p-2 ">item 1</div>
            <div class="col2 p-2 align-self-start">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2 align-self-end">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2 align-self-center">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="rowheigh border border-primary d-flex mb-3 ">
            <div class="col1 p-2 align-self-baseline">item 1</div>
            <div class="col2 p-2 align-self-baseline" style="font-size:48pt">item 2</div>
            <div class="col3 p-2 align-self-baseline">item 3</div>
        </div>


        <h3>全部填滿</h3>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2 flex-fill">item 1 has a lot of content</div>
            <div class="col2 p-2 flex-fill">item 2</div>
            <div class="col3 p-2 flex-fill">item 3</div>
        </div>

        <h3>成長與壓縮</h3>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2 flex-grow-1">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>

        <div class="border border-primary d-flex mb-3">
            <div class="col2 p-2 w-100">item 2</div>
            <div class="col3 p-2 flex-shrink-1">item 3333</div>
        </div>


        <h3>自動的margins</h3>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2 mr-auto">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2 ml-auto">item 3</div>
        </div>



        <h3>搭配 align-items</h3>
        <div class="rowheigh border border-primary d-flex mb-3 align-items-start flex-column">
            <div class="col1 p-2 mb-auto">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2">item 3</div>
        </div>

        <div class="rowheigh border border-primary d-flex mb-3 align-items-end flex-column">
            <div class="col1 p-2">item 1</div>
            <div class="col2 p-2">item 2</div>
            <div class="col3 p-2 mt-auto">item 3</div>
        </div>

        <h3>Wrap</h3>
        <div class="border border-primary d-flex mb-3 flex-wrap">
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
            <div class="col1 p-2">item</div>
            <div class="col2 p-2">item</div>
            <div class="col3 p-2">item</div>
        </div>

        <h3>Order</h3>
        <div class="border border-primary d-flex mb-3">
            <div class="col1 p-2 order-2">item 1</div>
            <div class="col2 p-2 order-3">item 2</div>
            <div class="col3 p-2 order-1">item 3</div>

        </div>

      

    </div>

  
  
   
</body>
</html>

(要看直接用程式碼看不然縱軸太長

###接續剛剛 item對齊 align-item-(start/center/end/baseline…)

Baseline 基底線?? 要每個內容物都有設定類別才會有共同的基底線

Content是指box最內側

###自身對齊 align-self-(start/center/end/baseline…)對齊flexbox的哪

###全部填滿 flexfill

###成長flex-grow-(1) 會被擠壓 ( w-100 固定 然後就會去擠壓

###壓縮flex-shrink-(1)

##Automargin 看父節點容器window自動對齊? mr-auto

Marginbotton = mb

Marginleft = ml

Marginright = mr

Margintop = mt

搭配 align item start end baseline …

### flexbox不像gridsystem超出容器就往下排列所以要用warp

### 排列order

###align Content

item調整跟Justify對齊的綜合通常用在換行

物件一多的時候

可以的話可以通通用content搭配對齊位置

star end baseline或between等等來用

用cross axis對齊

##補充觀念

P開頭的通常指padding boder到box的距離

M開頭的通常指margin boder到boder的距離

搭配除了上下左右還有 x橫軸y縱軸

Rem bs4才有 16px

核心讀法知道怎麼讀才知道怎麼改

#下午MVC 單元 View 上次講 C

等等會特別講 Razor 其實也是 c# 只是多了一些特性

上一次講c完全沒有view利用url傳資料到客戶端瀏覽器顯示

範例 夜市網站結合googlemap

首先建置簡單的m環境

靜態類別 就像 資料表 類別實體 屬性欄位

沒有繼承多載多型啥都沒有其時就是張資料表

Googlemap的使用可以地址也可以座標

有m無法直接v所以一定要有個c

開始key demo data

利用list泛型 那是什麼呢?

照理來說 string[10] 裡面就要放string , int[10]裡面就要放int

但list後面可以放任何檔案 list<model> 可以不用管他型態 甚至是類別也可以

還有一個叫arroylist 但更亂

詳細老師步驟在HomeContrler

View老師直接套用範本

### HomeController.cs

using _02View.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _02View.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            //03-1-6 在public ActionResult Index()內輸入以下內容
            string[] id = {"A01", "A02", "A03", "A04", "A05", "A06", "A07" };

            string[] name = { "瑞豐夜市", "新堀江商圈", "六合夜市", "青年夜市", "花園夜市", "大東夜市", "武聖夜市" };

            string[] address = { "813高雄市左營區裕誠路", "800高雄市新興區玉衡里", "800台灣高雄市新興區六合二路",
                "80652高雄市前鎮區凱旋四路758號", "台南市北區海安路三段533號", "台南市東區林森路一段276號",
                "台南市中西區武聖路69巷42號" };

            List<NightMarket> list = new List<NightMarket>();

            for(int i=0;i<id.Length;i++)
            {
                NightMarket nightmarket = new NightMarket();
                nightmarket.Id = id[i];
                nightmarket.Name = name[i];
                nightmarket.Address = address[i];

                list.Add(nightmarket);

            }


            return View(list);
        }
    }
}

###Views/Home/Index.cshtml

@model IEnumerable<_02View.Models.NightMarket>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Address)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Address)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>

###Models/NightMarket.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace _02View.Models
{
    public class NightMarket
    {
        public string Id { get; set; }

        public string Name { get; set; }

        public string Address { get; set; }
    }
}

###步驟

//03-1 建立一個顯示各大夜市的View
//03-1-1 在Models上按右鍵,選擇加入,新增項目,程式碼,選擇類別,名稱鍵入NightMarket.cs
//03-1-2 在NightMarket class中輸入下列欄位以建立Model
//03-1-3 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//03-1-4 指定控制器名稱為HomeController,並開啟HomeController
//03-1-5 using _03View.Models
//03-1-6 在public ActionResult Index()內輸入內容
//03-1-7 在public ActionResult Index()上按右鍵,新增檢視
//03-1-8 進行下列設定:
//       View name:Index
//       Template:List
//       Model class:NightMarket(02View.Models) 
//       勾選Use a layout pages
//       按下Add

##談view

如果view有牽涉到model

@model IEnumerable<_02View.Models.NightMarket>

I代表介面 enumerable 集合實體

只要是個集合就能用

@foreach (var item in Model)

來讀model直到讀完為止

接著來讀View範本模板

@Razor 的好處是可以在 View內寫c#

Title不同可以增加收尋引擎的排名

都是模板

可以用class套bootstrap

Htmlhelper

@Html.ActionLink("Create New", "Create")

404 http not found ( 等等會補充 錯誤頁面

@Html.DisplayNameFor(model => model.Name)

根據model去要欄位名稱

@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |

@Html.ActionLink("Details", "Details", new { id=item.Id }) |

@Html.ActionLink("Delete", "Delete", new { id=item.Id })

上面有foreach迴圈跑很多次

根據點選的按鈕去新增onclick事件與傳值 但這次不錯新刪修

所以底下再加上夜市圖片與google地址

不知道怎麼下手的話

第一步先寫死

Html寫c#記得要@

放圖片很簡單只是改成動態檔名放圖

去googlemap url看邏輯發現前面固定指要改地址就可以有map

一樣寫死一個連結

然後在加上razor@做動態地址資料讀取

Class 改成像按鈕

確定結束在貼程式碼與步驟

###補充: 404

基於安全性與友善性

url如果要求錯出現404

mvc的web.config有兩個

打開專案的不是view的

在system.web

<CustonErrors mode=”On” defaultRedirect=”404.html” ></ CustonErrors>

自訂錯誤訊息打開

簡單加個404.html檔案

DefaultRedirect預設導入頁面

接著

##Razor撰寫習慣

註解方式@*哈哈哈哈哈哈哈*@

@{

這

裡都是

<p>html出現在任何區塊都可以但是razor要放進去就要 @Razor 且字跟Razor要空半格</p>

Razor範

圍

XX 且字無法像在純HTML內讀字存在 ( 這個物件並不存在除非

@:這樣KEY就會原封不動顯示出來

}

<h2>@Math+@Eng+@Chi</h2>

純字串顯示

<h2>@(Math+Eng+Chi)</h2>

真正的運算

###RazorTest

@{
    ViewBag.Title = "RazorTest";
}


<h2>RazorTest</h2>

@*這是單行註解*@

@*這是
    區塊
    註解*@

@{
    string name = "Jacky";
    int Math = 95;
    int Eng = 90;
    int Chi = 85;

    <h2>歡迎 @name 光臨本站</h2>

    @:歡迎 @name 光臨本站

}

<h2>@Math+@Eng+@Chi</h2>
<h2>@(Math + Eng + Chi)</h2>
<hr />

@(ViewBag.IsLogin = true)

@if (ViewBag.IsLogin)
{
    @:會員已登入
}
else
{
    <span>會員未登入</span>
}
<hr />

@{ 
    string[] NightName = { "瑞豐夜市", "新堀江商圈", "六合夜市", "青年夜市", "花園夜市", "大東夜市", "武聖夜市" };

}

<ul>
    @foreach (var item in NightName)
    {
    <li>@item</li>
    }
</ul>

##ViewBag

ViewBag.IsLogin=true

背包.袋子=物品

##Helper class

Html.ActionLink()

物件.方法(參數)

用來產生超連結

##Code-first類別寫完後轉為model在透過ADO進入資料庫

Mvc的model有個預設數性只要是類別名稱叫id的都會被設定為id

之後會特別講code-first

###models/Member.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace _02View.Models
{
    public class Member
    {
        public string UserId { get; set; }
        public string Name { get; set; }
        public string Pwd { get; set; }
        public string Email { get; set; }
        public DateTime Birthday { get; set; }
    }
}

###controllers/htmlhelpercontroller.cs

using _02View.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _02View.Controllers
{
    public class HTMLHelperController : Controller
    {
        // GET: HTMLHelper
        //public ActionResult Index()
        //{
        //    return View();
        //}

        //03-6-6 建立GET與POST的Create方法
        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(Member member)
        {
            string msg = "註冊資料:<hr />帳號:"+member.UserId+"<br />姓名:"+member.Name+"<br />密碼:"+member.Pwd+"<br />信箱:"+member.Email+"<br />生日:"+member.Birthday+"<br />";
            ViewBag.Msg = msg;
            return View();
        }

    }
}

新增資料要有兩個action 一個是 get 一個是 post

第一個 get 只要回傳他一份編輯表單即可

重點是第二個 post

Class 當成參數傳過來

再來新增 creat的view ( 要用樣板一定要有model

接著利用razor與helper來寫view

爛達???? 講model時會講?

來與後端連接?

Helper有些裡面多載會有可以加上html屬性的參數且要用new{class={{form-control}

且c#裡面class是保留字前面必須加上@

把輸入的值在用 @ViewBag.Msg

叫回來顯示

且要用 @html.Raw處理htmltag

程式碼如下

###Views/HTMLHelper/Create.cshtml

@model _02View.Models.Member

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>
@*<form action="" method="post">*@
@using (Html.BeginForm())
{
    <p>
        @*<input id="Text1" type="text" class="form-control" />*@
        帳號:@Html.TextBoxFor(model => model.UserId, new { @class="form-control"})
    </p>
    <p>
        密碼:@Html.TextBoxFor(model => model.Pwd, new { @class = "form-control" })
    </p>
    <p>
        姓名:@Html.TextBoxFor(model => model.Name, new { @class = "form-control" })
    </p>
    <p>
        信箱:@Html.TextBoxFor(model => model.Email, new { @class = "form-control" })
    </p>
    <p>
        生日:@Html.TextBoxFor(model => model.Birthday, new { @class = "form-control" })
    </p>
    <p>
        <input id="Submit1" type="submit" value="註冊" class="btn btn-default" />
    </p>

    <p>
         @Html.Raw(ViewBag.Msg)
    </p>

}

@*</form>*@

### Controllers/HTMLHelperController.cs

using _02View.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _02View.Controllers
{
    public class HTMLHelperController : Controller
    {
        // GET: HTMLHelper
        //public ActionResult Index()
        //{
        //    return View();
        //}

        //03-6-6 建立GET與POST的Create方法
        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(Member member)
        {
            string msg = "註冊資料:<hr />帳號:"+member.UserId+"<br />姓名:"+member.Name+"<br />密碼:"+member.Pwd+"<br />信箱:"+member.Email+"<br />生日:"+member.Birthday+"<br />";
            ViewBag.Msg = msg;
            return View(member);
        }

    }
}

### Models/Member.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace _02View.Models
{
    public class Member
    {
        public string UserId { get; set; }
        public string Name { get; set; }
        public string Pwd { get; set; }
        public string Email { get; set; }
        public DateTime Birthday { get; set; }
    }
}

View是獨立的 所以很簡單可以套上bootstrap

Webform編譯完還是html所以還是可以套但是要透過jq比較麻煩

以夜市那一頁來介紹從新弄一個action然後重排一張view

用網格系統排版

一樣如果不知道怎下迴圈先死一次再來改

##卡片系統thumbnail

bs4有cord 但bs3只有

###webform 可以用以下方式比較容易做到響應式

Datalist 有講過

Listitem 好像沒講過

Repeater 好像比較容易

###Views/Home/BootstrapIndex.cshtml

@model IEnumerable<_02View.Models.NightMarket>

@{
       ViewBag.Title = "南部地區各大夜市";
}

<h2>南部地區各大夜市</h2>

<div class="row">
    @foreach (var item in Model)
    {
        string imgsrc = item.Id + ".jpg";

        <div class="col-md-4 col-sm-6">
            <div class="thumbnail">
                <img src="~/images/@imgsrc" width="250" />
                <div class="caption">
                    <h2>
                        @item.Name
                    </h2>
                    <p>
                        @item.Address
                    </p>
                    <p>
                        <a href="https://www.google.com/maps/place/@item.Address" target="_blank" class="btn btn-danger">顯示地圖</a>
                    </p>
                </div>
            </div>
        </div>
    }
</div>

###Controllers/HomeController.cs

using _02View.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _02View.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            //03-1-6 在public ActionResult Index()內輸入以下內容
            string[] id = { "A01", "A02", "A03", "A04", "A05", "A06", "A07" };

            string[] name = { "瑞豐夜市", "新堀江商圈", "六合夜市", "青年夜市", "花園夜市", "大東夜市", "武聖夜市" };

            string[] address = { "813高雄市左營區裕誠路", "800高雄市新興區玉衡里", "800台灣高雄市新興區六合二路",
                "80652高雄市前鎮區凱旋四路758號", "台南市北區海安路三段533號", "台南市東區林森路一段276號",
                "台南市中西區武聖路69巷42號" };

            List<NightMarket> list = new List<NightMarket>();

            for (int i = 0; i < id.Length; i++)
            {
                NightMarket nightmarket = new NightMarket();
                nightmarket.Id = id[i];
                nightmarket.Name = name[i];
                nightmarket.Address = address[i];

                list.Add(nightmarket);

            }


            return View(list);
        }

        public ActionResult BootstrapIndex()
        {
            
            string[] id = { "A01", "A02", "A03", "A04", "A05", "A06", "A07" };

            string[] name = { "瑞豐夜市", "新堀江商圈", "六合夜市", "青年夜市", "花園夜市", "大東夜市", "武聖夜市" };

            string[] address = { "813高雄市左營區裕誠路", "800高雄市新興區玉衡里", "800台灣高雄市新興區六合二路",
                "80652高雄市前鎮區凱旋四路758號", "台南市北區海安路三段533號", "台南市東區林森路一段276號",
                "台南市中西區武聖路69巷42號" };

            List<NightMarket> list = new List<NightMarket>();

            for (int i = 0; i < id.Length; i++)
            {
                NightMarket nightmarket = new NightMarket();
                nightmarket.Id = id[i];
                nightmarket.Name = name[i];
                nightmarket.Address = address[i];

                list.Add(nightmarket);

            }


            return View(list);
        }


        public ActionResult RazorTest()
        {
            return View();
        }
    }
}

##最後老師邏輯步驟

//03-1 建立一個顯示各大夜市的View
//03-1-1 在Models上按右鍵,選擇加入,新增項目,程式碼,選擇類別,名稱鍵入NightMarket.cs
//03-1-2 在NightMarket class中輸入下列欄位以建立Model
//03-1-3 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//03-1-4 指定控制器名稱為HomeController,並開啟HomeController
//03-1-5 using _03View.Models
//03-1-6 在public ActionResult Index()內輸入內容
//03-1-7 在public ActionResult Index()上按右鍵,新增檢視
//03-1-8 進行下列設定:
//       View name:Index
//       Template:List
//       Model class:NightMarket(02View.Models) 
//       勾選Use a layout pages
//       按下Add

//03-2 NightMarket View
//03-2-1 修改英文標題為中文,修改<th>標籤內容為中文字
//03-2-2 增加item.Id, 並將最後一欄註解
//03-2-3 執行以測試結果


//03-4 Razor語法
//03-4-1 在Home Controller 新增RazorTest() Action
//03-4-2 在public ActionResult RazorTest()上按右鍵,新增檢視
//03-4-3 進行下列設定:
//       View name:RazorTest
//       Template:Empty (without model)
//       勾選Use a layout pages
//       按下Add
//03-4-4 Razor語法練習

//03-5 使用Razor修改Home/Index View
//03-5-1 增加兩項<th>標籤
//03-5-2 讀取圖片檔名
//03-5-3 增加圖片及地圖顯示


//03-6 HTML Helper
//03-6-1 在Models上按右鍵,選擇加入,新增項目,程式碼,選擇類別,名稱鍵入Member.cs
//03-6-2 在Member class中輸入下列欄位以建立Model
//03-6-3 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//03-6-4 指定控制器名稱為HTMLHelperController,並開啟HTMLHelperController
//03-6-5 using _03View.Models
//03-6-6 建立GET與POST的Create方法
//03-6-7 在public ActionResult Create()上按右鍵,新增檢視
//03-6-8 進行下列設定:
//       View name:Create
//       Template:Create
//       Model classMember(02View.Models) 
//       勾選Use a layout pages
//       按下Add
//03-6-9 撰寫HTMLHelper/Create View 內容
//03-6-10 執行以測試結果
Previous2019/0503/Asp.net泛型處理常式驗證圖片應用&第七次專題報告UsecaseNext2019/0507/Java 物件導向_類別+函式觀念&階段性作業三

Last updated 6 years ago

Was this helpful?

Display propertygetbootstrap
TempData,ViewData和ViewBag的比较 - 文酱 - 博客园
ViewData VS ViewBag Vs TempData in MVCCsharpCorner
Logo
Logo
Logo