В моем продолжающемся путешествии по ASP.NET MVC я сейчас нахожусь в точке, где мне нужно визуализировать форму редактирования / создания для сущности.
Моя сущность состоит из перечислений и нескольких других моделей, созданных в хранилище через LINQtoSQL.
Сейчас я борюсь с тем, чтобы найти достойный способ визуализации форм редактирования / создания, которые будут содержать несколько выпадающих списков и несколько текстовых полей. Я понимаю, что это, возможно, не самый удобный подход, но именно этим я сейчас и займусь:).
У меня есть уровень хранилища и бизнес-уровень. Контроллеры взаимодействуют с сервисным уровнем.
Лучше ли просто создать модель вида, подобную этой?
public class EventFormViewModel
{
IEventService _eventService;
public IEvent Event { get; private set; }
public IEnumerable<EventCampaign> Campaigns { get; private set; }
public IEnumerable<SelectListItem> Statuses { get; private set; }
// Other tables/dropdowns go here
// Constructor
public EventFormViewModel(IEventService eventService, IEvent ev)
{
_eventService = eventService;
Event = ev;
// Initialize Collections
Campaigns = eventService.getCampaigns().ToSelectList(); //extn method maybe?
Statuses = eventService.getStatus().ToSelectList(); /extn for each table type?
}
Так что это даст мне новую EventFormViewModel, которую я привяжу к представлению. Но так ли это лучше? По сути, я бы извлек все данные из базы данных для нескольких разных таблиц и преобразовал бы их в IEnumerable. Это не кажется слишком эффективным, но я полагаю, я мог бы кэшировать содержимое выпадающих.
Кроме того, если все, что у меня есть, это методы, которые получают данные для выпадающего списка, я должен просто пропустить уровень обслуживания и перейти прямо в хранилище?
Последняя часть моего вопроса: возможно ли для метода расширения ToSelectList () написать один метод для каждой таблицы и использовать его в общем случае, даже если некоторые таблицы имеют разные столбцы («Id» и «Name» по сравнению с «) Id "и" CampaignName ").
Простите, если это слишком общее, я просто пытаюсь избежать перехода в тупик - или в тот, у которого будет много выбоин.