从概念上讲,视图是负责处理数据显示的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
);
希望这会有所帮助。如果您有任何问题,请告诉我。