传递Dynamic Type模型时的RuntimeBinderException

时间:2013-05-21 22:55:54

标签: asp.net asp.net-mvc-4

我有一张包含Id,Col1,Col2,Col3,Col4

的表格

使用下面的linq查询,我创建一个模型并将其传递给强类型的后续视图,一切正常

var cse = _db.table.OrderByDescending(n => n.id).Take(5);

@model IEnumerable<proj.Table>

@{
    ViewBag.Title = "Index";
}

<table>
@foreach (var item in Model) {
    <tr>

        <td>
            @Html.DisplayFor(modelItem => item.col1)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Col2)
        </td>
     <td>
            @Html.DisplayFor(modelItem => item.col3)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Col4)
        </td>
    </tr>
}

</table>

问题 -

我调整了一个linq查询,该查询只返回一列,视图更改如下

var cse1 = _db.Table.AsEnumerable().Select(n => new {n.Col1 }).OrderByDescending(n => n.id).Take(5);

@model dynamic


@foreach (var item in Model) {
    <tr>

        <td>
            item.col1
        </td>
        <td>
item.col2
        </td>

    </tr>
}
</table>

在上面运行会在“item.col1”处返回此错误 用户代码未处理Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

当鼠标悬停在“item.col1”时,它确实显示正确的预期值。

0 个答案:

没有答案