Asp.Net - MVC - System.Collections.Generic.IEnumerable

时间:2012-06-14 05:50:48

标签: asp.net-mvc asp.net-mvc-3 razor

我是Asp.net和MVC的新手。我试图编辑功能,但它给我一个错误 CS1061:'System.Collections.Generic.IEnumerable'不包含'Idx'的定义,并且没有扩展方法'Idx'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(是你错过了使用指令或程序集引用?)

代码

@model IEnumerable<SealManagementPortal_3._0.Models.VOC_CUSTODIAN>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            StaffID
        </th>
        <th>
            Name
        </th>
        <th>
            IC
        </th>
        <th>
            Phone
        </th>
        <th>
            Branch
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.StaffId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.NRICNo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.MobileNo)
        </td>
         <td>
            @Html.DisplayFor(modelItem => item.Branch)
        </td>
        <td>
         @Html.ActionLink("Details", "Details", new { id=Model.Idx }) // error here
         </td>

    </tr>
}

</table>

2 个答案:

答案 0 :(得分:2)

您仍在引用枚举器。所以它需要 item 而不是 Model

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

答案 1 :(得分:1)

您已尝试将actionlink的id属性设置为Model.Idx,但您的Model是VOC_CUSTODIAN对象的IEnumerable。您需要使用集合当前枚举器的Idx值。您只需将“模型”更改为“项目”,就像循环中的每个其他html控件一样:

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