從概念上講,視圖是負責處理數據顯示的MVC Web應用程序的一部分。所以,如果你想以不同的方式顯示數據,每個「顯示器」都有自己對應的aspx視圖最合理。
所有視圖模型都可以從相同的基本模型繼承。因此,例如,我們可能有四種模式和三個觀點:
public abstract class BaseViewModel {}
public class GridViewModel : BaseViewModel {}
public class TableViewModel : BaseViewModel {}
public class SummaryViewModel : BaseViewModel {}
GridViewPage<GridViewModel>
TableViewPage<TableViewModel>
SummaryViewPage<SummaryViewModel>
每個視圖可以有不同的stylehsheets和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
}
}
但是,你可以格式化路線,但你認爲合適。例如,通過上面的「monolithic」ActionResult,我們可以在Global中創建以下路線。asax文件:
routes.MapRoute(
"FormattedViewPage", // Route name
"View/Page/{pageType}", // URL with parameters
new { controller = "ViewPageController", action = "PageViewResult", pageType = "grid" } // Parameter defaults
);
希望這會有所幫助。如果您有任何問題,請告訴我。