因此,這裏是從MSDN教程一個視圖文件在asp.net:困惑在ASP.NET「模式」之意(S)的意見
@model EFDBfirst.Models.Student
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Student</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LastName)
</dt>
<dd>
@Html.DisplayFor(model => model.LastName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.FirstName)
</dt>
<dd>
@Html.DisplayFor(model => model.FirstName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.EnrollmentDate)
</dt>
<dd>
@Html.DisplayFor(model => model.EnrollmentDate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.MiddleName)
</dt>
<dd>
@Html.DisplayFor(model => model.MiddleName)
</dd>
</dl>
<table class="table">
<tr>
<th>
Course Title
</th>
<th>
Grade
</th>
<th>
Credits
</th>
</tr>
@foreach (var item in Model.Enrollments)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Course.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Grade)
</td>
<td>
@Html.DisplayFor(modelItem => item.Course.Credits)
</td>
</tr>
}
</table>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.StudentID }) |
@Html.ActionLink("Back to List", "Index")
</p>
在第一行有model
和Models
。我很確定Models
是指項目根目錄下的「Models」文件夾。
幾行下面有@Html.DisplayNameFor(model => model.LastName)
其中有model
裏面。這與第一行中的model
有什麼不同?
然後再次有@foreach (var item in Model.Enrollments)
其中包括Model
現在這一個不以「s」結束,所以我不認爲它是指項目根目錄中的Models
文件夾。那麼這是什麼?
還有modelItem
,我不確定它只是一個參數還是指這個類中的某些東西。
最後一個是@Html.ActionLink("Edit", "Edit", new { id = Model.StudentID })
,它與foreach中使用的類似,這是指相同的東西嗎?
'Models'是命名空間,它可能映射到或不映射到項目中的文件夾。 '@ Html.DisplayNameFor(...)'中的'model'是lambda函數中的局部變量(只存在於括號內)。第一行只告訴ASP設計器'model'是什麼類型,所以Intellisense的作品。在頁面的其餘上下文中的「模型」是傳遞到視圖中的實際Model對象。 –
不要讓在@ Html.DisplayNameFor()中使用的表達式讓你感到困惑......這只是一個lambda,你可以在這裏使用任何你想要的東西..'@ Html.DisplayNameFor(HiImJamie => HiImJamie.LastName)'會工作同樣的方式.. – JamieD77