簡體   English   中英

MVC3視圖中的模型計數檢查

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM