iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

ASP.NET MVC5從入門到退坑系列 第 8

[Day8]Scaffold產生的程式碼-Index

  • 分享至 

  • xImage
  •  

今天來了解一下Scaffold幫我們產生的Index


Index檢視

透過範本所建立的Index檢視頁面,會看到如下的內容

@model IEnumerable<FirstProject.Models.ModelName>

這一行是用來宣告模型,IEnumerable是一個集合物件,所以我們的View所參考的是FirstProject.Models.ModelName這個模型的集合物件,Controller傳到View的模型資料也必須與這個View所宣告的型別相同

@{
    ViewBag.Title = "Index";
}

這一段是設定Title名稱給主版使用也就是在~/Views/Shared/_Layout.cshtml

@{}所代表的意思之後幾天會說明,今天先探討結構部分

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

這一段代表建立一個連結,第一個參數是連結名稱,第二個參數是Create的Action

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.姓名)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.內容)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.姓名)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.內容)
        </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>

因為是列表的頁面,所以自動會使用table樣式搭配foreach迴圈逐筆取出,形成一個列表
@Html.DisplayNameFor():
輸出特定的欄位名稱等同於table裡的th

@foreach(var item in Model):
這裡的Model代表從Controller傳過來的資料,所以這個Model的型別一定等於第一行所宣告的@model IEnumerable<FirstProject.Models.ModelName>的型別

@Html.DisplayFor():
用來取得所傳入的模型資料,裡面的modelItem也代表著所參考的Model,modelItem是可以更改名稱的
例如更改成(m=>item.內容)

@Html.ActionLink():
最後所看到的三組@Html.ActionLink()分別連結至Edit、Details、Delete,第三組參數是要傳到對應的Action的參數


上一篇
[Day7]由範本產生的View類型
下一篇
[Day9]Scaffold產生的程式碼-Create
系列文
ASP.NET MVC5從入門到退坑30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言