Asp.net mvc Net MVC:使用不同的布局显示相同的数据

Asp.net mvc Net MVC:使用不同的布局显示相同的数据,asp.net-mvc,controls,user-interface,page-layout,Asp.net Mvc,Controls,User Interface,Page Layout,我想创建一个页面,允许用户选择查看数据的方式,即支持分组的摘要、支持分组的网格、支持分组的表格、地图、时间线、xml、json等 现在,每个布局可能有不同的用途,使用不同的视图模型,这些视图模型继承自公共基类/视图模型。原因是,每个布局都需要它所处理的对象结构不同,有些需要层次结构,有些则需要更平坦的结构 每个布局将调用相同的存储库方法,每个布局将支持相同的功能,即搜索和筛选,因此这些控件将在布局之间共享。这种情况的主要例外是排序,只有网格和表视图需要支持这种排序 现在我的问题是,人们认为什么是

我想创建一个页面,允许用户选择查看数据的方式,即支持分组的摘要、支持分组的网格、支持分组的表格、地图、时间线、xml、json等

现在,每个布局可能有不同的用途,使用不同的视图模型,这些视图模型继承自公共基类/视图模型。原因是,每个布局都需要它所处理的对象结构不同,有些需要层次结构,有些则需要更平坦的结构

每个布局将调用相同的存储库方法,每个布局将支持相同的功能,即搜索和筛选,因此这些控件将在布局之间共享。这种情况的主要例外是排序,只有网格和表视图需要支持这种排序

现在我的问题是,人们认为什么是最好的方法

使用DisplayFor处理不同类型的渲染? 还有,我该如何处理这些动作。。。我可以想象我将使用一个操作,并传入布局类型,但这如何支持摘要、网格和表视图所需的分组。 我是否将每个分组视为一种布局类型 从URL的角度来看,这是如何工作的?人们认为支持这种布局功能的模板是什么 干杯
Anthony

首先,如果是相同的数据,那么我会尝试对所有视图使用相同的模型,但根据用户想要查看数据的方式,使用不同的css或不同的aspx页面/控件来呈现模型


此外,您可能希望了解JavaScript可以完成多少工作,这完全取决于您希望用户体验的丰富程度。

从概念上讲,视图是负责处理数据显示的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>
您可以按自己认为合适的方式设置管线的格式。例如,使用上述单片ActionResult,我们可以在Global.asax文件中创建以下路由:

    routes.MapRoute(
        "FormattedViewPage", // Route name
        "View/Page/{pageType}", // URL with parameters
        new { controller = "ViewPageController", action = "PageViewResult", pageType = "grid" } // Parameter defaults
    );
希望这有帮助。如果你有任何问题,请告诉我

    routes.MapRoute(
        "FormattedViewPage", // Route name
        "View/Page/{pageType}", // URL with parameters
        new { controller = "ViewPageController", action = "PageViewResult", pageType = "grid" } // Parameter defaults
    );