ASP.NET MVC之谜

时间:2011-02-04 05:01:38

标签: c# asp.net-mvc

解释这如何打印出两个不同的值:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<Models.AModel>>" %>

<%
int i = -1;
foreach (var m in AModel){
    i++;
%>
<td><%= Html.TextBox(string.Format("[{0}].TheName", i), m.TheName) %> <%= m.TheName %></td>
<% } %>

例如,如果List包含三个元素{TheName:“A”}和{TheName:“B”}和{TheName:“C”},它将打印:

<td><input name="[0].TheName" type="text" value="A">B</td>
<td><input name="[1].TheName" type="text" value="B">C</td>
<td><input name="[2].TheName" type="text" value="C">A</td>

完全莫名其妙。

即使不是答案,我也会猜测猜测并回答最佳猜测。首先:

-TheName在getter中没有任何特殊代码。

编辑:用更好的例子澄清问题(正如我发现的那样),完善了代码以匹配建议。还是有问题。正如您所看到的,似乎两个列表在某种程度上是无序的。

2 个答案:

答案 0 :(得分:2)

这是代码的部分转储吗?有许多奇怪之处:<​​/ p>

  1. 您将<%:Html.TextBox一起使用,这是没有意义的。 <%: HTML编码输出,因此您无法使用它来打印TextBox
  2. 您的循环中有一个结束</td>标记,但没有开放<td>标记。
  3. <强>更新

    编辑之后,它只是看起来像你的列表/枚举必须做一些奇怪的事情(或你发布的输出不是实际的输出)你应该告诉我们你是如何填充模型的。

答案 1 :(得分:0)

此代码根本不正确。 雅各布提到了一些人。

即使您确定此代码有效,我认为它与List项目绑定查看有关,并且会发生显示下一个值的内容......