Итерация в Razor против ASPX - PullRequest
1 голос
/ 27 июля 2011

Можно ли создать однострочную команду итерации в моем не бритвенном представлении MVC, которое выполняет следующие действия:

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

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

Даже если что-то подобное было возможно, я бы советовал вам против.Это ужасно.Вместо этого вы можете взглянуть на шаблонных делегатов Razor .

Или простой цикл:

@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)

ОБНОВЛЕНИЕ:

Похоже, вы хотите переписать этот код для веб-форм.Итак:

<% for (var i = 0; i < Model.Toys.Length; i++) { %>
    <input name="Make<%= i %>" type="hidden" value="<%= Model.Toys[i].Make %>" />
<% } %>
0 голосов
/ 28 июля 2011

Вы также можете просто создать EditorTemplate для обработки объектов типа Toy (соглашения об именах обрабатывают это, поэтому вы можете просто назвать его toy.cshtml, если это строгий тип), и тогда, по вашему мнению, вы можете просто иметь @Html.EditorFor(x=>x.Toys)

0 голосов
/ 28 июля 2011

Попробуйте: шаблонные делегаты бритвы

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

Его решение именно для вашей проблемы: D

...