После того, как я нашел это в нашем коде, я понял несколько вещей:
- "сделай это сейчас, сделай это позже" имеет предел
Iна самом деле не знаю, где это происходит с MVC3
@model int
@using Company.Core.Logic.Financial
@using Company.Core.Repositories
@{
var values = from AccountPlan e in new AccountPlanRepository().GetItemList()
where String.IsNullOrEmpty(e.PromoCode) // filter out promotional plans
select new { id = e.AccountPlanId, name = e.Description };
var items = new SelectList(values, "id", "name", Model);
}
@Html.DropDownListFor(m => m, items)
Это конкретно шаблон редактора (@Html.EditorFor(m => m.AccountPlan)
), но он заставил меня понять, что я не знаю, где этоКод такого рода подходит для таких общих вещей, как построители меню.Если вы используете макеты для MVC3 (а кто нет), где находится код для построения меню в верхней части на основе ролей пользователя?Я мог бы предположить, что код представления будет перебирать предварительно созданные пункты меню и HTML-кодировать их, но поскольку Модель строго типизирована, означает ли это, что все Модели должны знать элементы меню?
На этот раз, здесь Webforms имеют больше смысла для меня, так как это будет в CodeBehind, но я действительно хочу уйти от этого.
edit: хотя я начал спрашивать о коде Layout,Я предполагаю, что это работает и для EditorTemplates, и для DisplayTemplates.Если это неверное предположение, пожалуйста, дайте мне знать, куда они должны идти.
edit2: В конечном итоге я хочу иметь чистое, возможно, даже место для внедрения зависимостей для запуска кода, который вызывается из EditorTemplate
.Возможно, это тот случай, когда EditorTemplate сразу вызывает в RenderAction?