До сих пор я использовал класс Model для встраивания списка связанных значений для отображения в виде DropDownList.Например, предположим, что у меня есть класс модели Contact, в котором есть свойство ContactType
public class Contact {
...
public int ContactTypeID { get; set; }
...
}
ContactTypeID ссылается на строку в таблице базы данных, которая содержит все типы контактов, такие как Customer, Supplier и т. Д. Я использовалДо сих пор успешно, свойство класса Contact называлось, например, ContactTypeList, как в следующем примере
public IEnumerable<SelectListItem> ContactTypeList {
get {
return GetContactTypeList().Select(
t => new SelectListItem { Text = t.Description,
Value = t.ContactTypeID.ToString() });
}
}
Таким образом, при использовании строгих типизированных представлений я могу сделать следующее
<%: Html.DropDownListFor( model => model.ContactTypeID, Model.ContactTypeList, new {} )%>
Этот метод работает без каких-либо проблем, но не является полностью чистым с точки зрения SoC.
В новом проекте, который я начинаю, я использую шаблон репозитория и StructureMap в качестве инструмента DI / IoC, и поэтому класс модели больше не имеет ссылки на класс репозитория, который получает данные избазовое хранилище данных.
Я знаю, что всегда могу использовать контроллер и ViewData / ViewBag, чтобы эти списки передавали представления, но мне было интересно, является ли это хорошим способом достижения области действия.
Как дела в ваших проектах?Каков наилучший способ достижения результата и сохранения чистоты кода?
Спасибо за помощь