在asp.net mvc列表视图中使用var类型

时间:2009-07-01 17:32:11

标签: asp.net-mvc

以下代码无法编译

<ul>
<%
foreach( var row in SomeDataTable.Rows)
{
%>
  <li>
   <%= Html.ActionLink( row["field1"].ToString(), "action", new { } ) %>
  </li>
<%
}v
%>
</ul>

错误是 - 无法将[]索引应用于'object'类型的表达式

var应该是隐式类型?

是什么给出了?

注意 - 我知道使用DataTable / Dataset等是不好的做法,所以如果你愿意,请把你的马放在那个上:)

5 个答案:

答案 0 :(得分:3)

不应该是row["field1"]而不是item["field1"]吗?

答案 1 :(得分:2)

DataRowCollection不实现IEnumberable&lt; DataRow&gt;只有IEnumerable。你需要首先在你的foreach中调用SomeDataTable.Rows.Cast&lt; DataRow&gt;(),或者不要使用var,正如mxmissle建议的那样。

的IEnumerable&LT;&的DataRow GT;编译器需要知道枚举的类型,这是使用var。

所必需的

答案 2 :(得分:0)

您需要使用

row["field1"]

而不是

item["field1"]

答案 3 :(得分:0)

调用item [“field1”]是否有事可做但是你将迭代器变量命名为“row”?

答案 4 :(得分:0)

将其转换为DataRow会发生什么?

(DataRow row in SomeDataTable.Rows)