[英]Model Count check in MVC3 view
這是我的查看代碼:
@model IEnumerable<StudentRegistrationPortal.Models.CourseRegisterModel>
@{
ViewBag.Title = "Welcome Student";
}
<h2>Welcome
@Context.User.Identity.Name
</h2>
@Html.ActionLink("[Sign Out]", "SignOut", "Student")
<ul>
<li>@Html.ActionLink("Register Courses", "registerCourses", "Course")</li>
</ul>
<%if (Model.Count == 5) { %>
<table border="1">
<tr>
<th>
RollNumber
</th>
<th>
Course Code
</th>
<th>
Course Name
</th>
<th>Add/Drop</th>
</tr>
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(0).Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(0).Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(1).Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(1).Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(2).Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(2).Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(3).Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(3).Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(4).Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => Model.ElementAt(4).Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
</table>
<% } %>
我已將IF條件添加到僅在模型計數等於5的情況下繪制表的狀態,但是如果模型不包含任何數據,則它會給出以下錯誤:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
IF條件有什么問題?
謝謝。
僅當您有5個CourseRegisterModel
您的代碼才有效。 這是你的問題。
你為什么不只是迭代模型
@foreach(StudentRegistrationPortal.Models.CourseRegisterModel modelValue in Model)
{
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => modelValue.Course.Code)
</td>
<td>
@Html.DisplayFor(modelItem => modelValue.Course.Name)
</td>
<td>
@Html.ActionLink("Drop", "Drop", new { id=-1 })
</td>
</tr>
}
如果您確實堅持在視圖內部執行此邏輯,則可以使用運算符優先級並檢查包含項的Model。 無需其他插件,請編輯以下行:
<%if (Model.Count == 5) { %>
至:
// check will only continue if Model.Any() evaluates to true
@if (Model.Any() && Model.Count == 5) { ... }
我將親自在服務或控制器類中的viewModel中執行此操作,並真正充實此硬編碼Count == 5存在的邏輯。 您還似乎在混用razon和webforms語法。
為什么在if子句中使用<%語法,將其更改為使用@
@if (Model.Count == 5)
{
最后還要將<%}%>更改為以下內容
}
如果Model為Null,則訪問該計數將引發異常。 因此,在此之前,您必須檢查模型是否為null。
@if(Mode != null && Mode.Count == 5)
{
//....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.