我有ViewModel和Model,如下所示
public class MyViewModel
{
public List<MyModel> MyItems { get; set; }
/* There are many other properties*/
}
public class MyModel
{
public string MyType { get; set; }
public decimal value1 { get; set; }
public decimal value2 { get; set; }
}
我正在绑定剃刀视图,如下所示。对于第1列,我只能显示字符串。对于第2列和第3列,我需要显示包含模型数据的文本框。
<table >
<thead>
<tr>
<th>My Column1</th>
<th>My Column2</th>
<th>My Column3</th>
</tr>
</thead>
<tbody>
@foreach (var myItem in Model.MyItems)
{
<tr>
<td>
@myItem.MyType
</td>
<td>@Html.TextBoxFor( ??? )</td>
<td></td>
</tr>
}
</tbody>
</table>
在正常情况下,我看到我们可以像@ Html.TextBoxFor(m =&gt; m.myvalue1)那样做。但在上述情况下如何做到这一点。请建议。
答案 0 :(得分:2)
Razor中的HtmlHelpers通过索引器更好地工作。你必须这样做:
@for (var i = 0; i < Model.MyItems.Count; ++i)
{
<tr>
<td>@Model.MyItems[i]</td>
<td>@Html.TextBoxFor(m => m.MyItems[i])</td>
<td></td>
</tr>
}
答案 1 :(得分:1)
您已在@foreach
循环中解析列表,因此您只需要<td>@Html.TextBoxFor(myItem.value1)</td>