MVC3 Лучшая практика с коллекциями в Razor - PullRequest
0 голосов
/ 12 декабря 2011

Возможно, спрашивали раньше, но не то, чтобы я мог найти.

Мне просто интересно от тех из вас, кто обладает гораздо большим опытом, чем я:

Как лучше всего отображать, редактировать, добавлять новые коллекции в формате Razor?

Чтобы прояснить, что я имею в виду, я в первую очередь сравниваю использование EditorTemplate для коллекции строго типизированных объектов, чтобы показать только некоторые свойства указанного объекта, в отличие от использования цикла foreach в коде Razor. сам по себе, и подробно объясняя значения свойств там.

Пример:

EditorTemplate:

<div>
    <div>
        @Html.LabelFor(x => x.Foo, "Foo")
    </div>
    <div >
        @Html.TextBoxFor(x => x.Fishfood, new { style = "width: 200px" })
    </div>
</div>

Главный вид:

<div>
     @Html.EditorFor(x => x.FooBarItems)
<div>

OR

@foreach (var item in Model.Items)
{
    <div>
        @Html.Label("Foo", item.Foo)
    </div>
    <div >
        @Html.TextBox(item.Fishfood, new { style = "width: 200px" })
    </div>
}

Они практически одинаковы во всех отношениях, но я подумал, что я что-то упустил!

Спасибо

1 Ответ

5 голосов
/ 12 декабря 2011

Первый лучше. Я всегда использую шаблоны редактора / отображения. Это позволяет мне повторно использовать шаблон в нескольких местах. Также в случае шаблона редактора он генерирует собственные имена и идентификаторы полей ввода, что не так, когда вы пишете цикл foreach. Если вы хотите сделать это inline , вам придется использовать цикл for с индексом, но все становится ужасно.

Таким образом, каждый раз, когда вам нужно отключить / отредактировать коллекцию чего-либо в приложении ASP.NET MVC, определите шаблон отображения / редактирования для этого чего-то и затем вызовите его из основного представления свойства коллекции.

Другой способ сказать то же самое заключается в следующем: каждый раз, когда вы пишете цикл foreach или for в окне Razor, должен прозвучать сигнал тревоги, сообщающий, что есть лучший способ: -)

...