Razor与ASPX的迭代

时间:2011-07-27 18:59:53

标签: asp.net-mvc razor

是否可以在我的非剃刀MVC视图中创建单行迭代命令,执行以下操作:

@Model.Toys.Each(@<input name="Make@{@(item.Index + 1)}" type="hidden" value="@item.Item.Make" />)

3 个答案:

答案 0 :(得分:2)

即使这样的事情是可能的,我也建议你反对。它很丑。您可以改为查看templated Razor delegates

或简单循环:

@for (var i = 0; i < Model.Toys.Length; i++) {
    <input name="Make@(i)" type="hidden" value="@Model.Toys[i].Make" />
}

或编辑器模板:

@Html.EditorFor(x => x.Toys)

更新:

您似乎想要为WebForms重写此代码。所以:

<% for (var i = 0; i < Model.Toys.Length; i++) { %>
    <input name="Make<%= i %>" type="hidden" value="<%= Model.Toys[i].Make %>" />
<% } %>

答案 1 :(得分:0)

试一试:模板化的剃刀代表

http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx

他的解决方案完全适合您的问题:D

答案 2 :(得分:0)

你也可以简单地创建一个EditorTemplate来处理Toy类型的对象(命名约定处理这个,所以你可以简单地称它为toy.cshtml,如果它是强类型的话),然后在你的视图中你可以简单地{{1} }