Все мои контроллеры в моем проекте наследуются от базового контроллера, который имеет свойство с моей моделью Entity.ASP.NET MVC: Помогает ли помощник захватить данные?
Позвольте сказать, что у меня есть представление, показывающее города в мире, и у него есть возможность фильтровать по странам. Фильтр страны - это выпадающий список стран из базы данных. Помощник Html для раскрывающегося списка запрашивает IEnumerable<SelectItem>
.
Теперь с этой информацией, это нормально, если я создаю HtmlHelper
, который выглядит следующим образом:
public static IEnumerable<SelectListItem> GetCountries(HtmlHelper htmlHelper)
{
return (from c in ((BaseController) htmlHelper.ViewContext.Controller).Entities.Countries
orderby c.Name
select new SelectListItem() {Text = c.Name, Value = c.ID});
}
Вопрос не если это возможно, но если это нормально в соответствии с тем, как MVC из делать вещи. (Или я должен поместить коллекцию стран в ViewData внутри контроллера?)
Но как я могу получить страны внутри моего ViewPage? Основной элемент в моей ViewPage - это IEnumerable. Поэтому я должен поместить коллекцию стран в ViewData (ViewData ["countries"]). Код указывает, что вы создаете новую ViewPage, которая наследует исходную ViewPage и которая добавляет свойство Entities (также похоже на большую зависимость). –
Gidon
Вы можете создать viewmodel, который содержит как города, так и страны. – Morph
Я чувствую, что иногда ViewModel хорош, но, используя его для каждой страницы (потому что многие страницы состоят из основных данных, с некоторыми дополнительными данными), просто создает так много ViewModels, что я задаюсь вопросом, все ли это выгодно. – Gidon