Концептуально View - это часть веб-приложения MVC, которое отвечает за обработку отображения данных.Поэтому, если вы хотите отображать данные по-разному, наиболее логичным представляется то, что каждый «дисплей» имеет свой собственный соответствующий вид aspx.
Все модели представлений могут наследоваться от одной базовой модели.Так, например, у нас может быть четыре модели и три представления:
public abstract class BaseViewModel {}
public class GridViewModel : BaseViewModel {}
public class TableViewModel : BaseViewModel {}
public class SummaryViewModel : BaseViewModel {}
GridViewPage<GridViewModel>
TableViewPage<TableViewModel>
SummaryViewPage<SummaryViewModel>
К каждому из представлений могут быть прикреплены разные таблицы стилей и файлы JavaScript, поэтому вы можете использовать DisplayFor, если хотите,или вы можете создать макет вручную.
Что касается контроллера, вы можете создать один метод действия, который возвращает любое из трех представлений, или вы можете создать три отдельных ActionResults, по одному для каждого представления.Вот «монолитный» ActionResult:
public ActionResult PageViewResult(string pageType)
{
switch (pageType)
{
//define your cases, return your views and your models
//make sure to set a default
}
}
Вы можете форматировать маршруты так, как считаете нужным.Например, с помощью вышеупомянутого «монолитного» ActionResult мы могли бы создать следующий маршрут в нашем файле Global.asax:
routes.MapRoute(
"FormattedViewPage", // Route name
"View/Page/{pageType}", // URL with parameters
new { controller = "ViewPageController", action = "PageViewResult", pageType = "grid" } // Parameter defaults
);
Надеюсь, это поможет.Дайте мне знать, если у вас есть какие-либо вопросы.