从概念上讲,视图是 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>
每个视图都可以附加不同的样式表和 javascript 文件,因此您应该能够根据需要使用 DisplayFor,或者您可以手动创建布局。
至于控制器,您可以创建一个操作方法来返回三个视图中的任何一个,或者您可以创建三个单独的 ActionResult,每个视图一个。这是“整体”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
);
希望这可以帮助。如果您有任何问题,请告诉我。