Это кажется слишком многословным для меня ... есть способ обойти , создавая счетчик, чтобы прибегнуть к стандарту для цикла?
Да, это кажется слишком многословным для меня. Даже цикл кажется слишком подробным, поскольку он вам не нужен, если вы используете шаблоны редактора.
<ul>
@Html.EditorFor(x => x.PhoneNumberEntries)
</ul>
и то, очевидно, вы должны определить пользовательский шаблон редактора, который будет автоматически вынесено для каждого элемента коллекции PhoneNumberEntries
(~/Views/Shared/EditorTemplates/PhoneNumberEntry.cshtml
):
@model PhoneNumberEntry
<li>
<span>@Model.PhoneNumber</span>
@Html.EditorFor(m => m.PhoneNumber)
</li>
Вам даже не нужно писать циклы, как шаблоны работают по соглашению.
Обратите внимание, что имя и расположение шаблона редактора важны. Он должен быть расположен либо внутри ~/Views/Shared/EditorTemplates
, если вы хотите поделиться этим шаблоном между представлениями, принадлежащими различным контроллерам в вашем приложении, и это то место, где ASP.NET MVC сначала ищет его. Или вы также можете поместить его в ~/Views/XXX/EditorTemplates
, где XXX
- это имя текущего контроллера. Тогда имя шаблона редактора должно быть именем типа, используемого как агрумент для свойства коллекции.
Так что, если у вас не было вашей основной модели вида:
public IEnumerable<FooBarViewModel> FooBars { get; set; }
название соответствующего шаблона будет FooBarViewModel.cshtml
и, очевидно, будет сильно типизированных к FooBarViewModel
.
Что случилось с цикл? – jrummell
@jrummell, они не принадлежат к представлениям. Циклы Foreach относятся к контроллерам, моделям, ... Представления используются только для отображения данных. Если вам нужно отображать коллекции данных, вы просто используете шаблоны редактора/отображения. –