Asp.net mvc 用于显示数据的ASP.NET MVC通用视图

Asp.net mvc 用于显示数据的ASP.NET MVC通用视图,asp.net-mvc,Asp.net Mvc,我正在从事的一个项目涉及通过ASP.NET MVC应用程序公开许多数据实体(超过200个)。 我不想为每个实体模式编写视图,我想知道是否有一种方法可以让一个通用视图显示不同的模型(例如,一个视图可以读取模型属性(元数据)并生成一个HTML表来显示实体列表。两个选择: 动态数据项目 您是否尝试过可以自动创建所需内容的项目 Asp.NETMVC 但是,如果您想执行您要求的操作,则始终可以创建一个没有强类型模型的单一视图。您将始终将数据传递给它ViewDatadictionary。然后,视图将解析该数

我正在从事的一个项目涉及通过ASP.NET MVC应用程序公开许多数据实体(超过200个)。
我不想为每个实体模式编写视图,我想知道是否有一种方法可以让一个通用视图显示不同的模型(例如,一个视图可以读取模型属性(元数据)并生成一个HTML表来显示实体列表。

两个选择:

动态数据项目 您是否尝试过可以自动创建所需内容的项目

Asp.NETMVC 但是,如果您想执行您要求的操作,则始终可以创建一个没有强类型模型的单一视图。您将始终将数据传递给它
ViewData
dictionary。然后,视图将解析该数据并显示所需的内容

路由
始终可以创建以下两条管线:

routes.MapRoute(
    "EntityRoute",
    "{entityName}",
    new {
        controller = "Entity",
        action = "Display",
        entityName = "SomeDefaultEntity" }
);

routes.MapRoute(
    "EntityRoute",
    "{entityName}/{recordId}",
    new {
        controller = "Entity",
        action = "Details",
        entityName = "SomeDefaultEntity",
        recordId = string.Empty }
);

这会将所有请求重定向到同一控制器操作,该控制器操作将提供正确的实体集数据,并将其传递到
ViewData
字典中,并返回将使用该数据的视图。第二个请求将显示某个实体中某条记录的详细信息(如果需要提供主/详细信息功能).

两种选择:

动态数据项目 您是否尝试过可以自动创建所需内容的项目

Asp.NETMVC 但是,如果您想执行您要求的操作,则始终可以创建一个没有强类型模型的单一视图。您将始终将数据传递给它
ViewData
dictionary。然后,视图将解析该数据并显示所需的内容

路由
始终可以创建以下两条管线:

routes.MapRoute(
    "EntityRoute",
    "{entityName}",
    new {
        controller = "Entity",
        action = "Display",
        entityName = "SomeDefaultEntity" }
);

routes.MapRoute(
    "EntityRoute",
    "{entityName}/{recordId}",
    new {
        controller = "Entity",
        action = "Details",
        entityName = "SomeDefaultEntity",
        recordId = string.Empty }
);

这会将所有请求重定向到同一控制器操作,该控制器操作将提供正确的实体集数据,并将其传递到
ViewData
字典中,并返回将使用该数据的视图。第二个请求将显示某个实体中某条记录的详细信息(如果需要提供主/详细信息功能).

有一个模型可视化工具,它可以让你通过反映模型的属性来显示模型。如果你需要任何性能,这是不可行的,但也许它可以让你开始。

有一个模型可视化工具,它可以让你通过反映模型的属性来显示模型。如果你需要任何性能,这是不可行的,但也许它可以让你开始。

如果你您只需要显示,就可以在几分钟内使用反射编写自己的通用渲染器。或者,您可以使用MvcContrib中的ModelVisualizer,或者使用MvcContrib中的ModelVisualizer,它可以执行Html.Grid(Model).AutoGenerateColumns()自动将属性显示为列。它不支持DataAnnotation或属性,但您可以编写自己的扩展方法,使用反射根据某些属性生成网格的列。您还可以使用jqGrid的tableToGrid()方法将此网格快速转换为jqGrid

如果您需要输入支持,有几种选择:

  • MvcContrib(这里您可以看到一个关于如何使用反射的简单示例)
  • MVC v2 InputFor(),我认为它支持呈现多个属性,但我不确定
  • 从视图模型读取元数据(属性),并自动生成jqGrid格式和编辑选项

  • 也应该有商业工具。

    如果您只需要显示,您可以使用反射在几分钟内编写自己的通用渲染器。或者,您可以使用MvcContrib中的ModelVisualizer,或者使用MvcContrib中的ModelVisualizer,后者可以执行Html.Grid(Model).AutoGenerateColumns()自动将属性显示为列。它不支持DataAnnotation或属性,但您可以编写自己的扩展方法,使用反射根据某些属性生成网格的列。您还可以使用jqGrid的tableToGrid()方法将此网格快速转换为jqGrid

    如果您需要输入支持,有几种选择:

  • MvcContrib(这里您可以看到一个关于如何使用反射的简单示例)
  • MVC v2 InputFor(),我认为它支持呈现多个属性,但我不确定
  • 从视图模型读取元数据(属性),并自动生成jqGrid格式和编辑选项

  • 也应该有商业工具。

    “它不支持数据注释或属性。”现在做:D提交1/15的评论:将ModelMetadata支持添加到grid.AutoGenerateColumns。好吧,这是个好消息!然后我也可以使用它,因为我一直想删除一些列,但仍然自动生成其余的列。我认为更好的方法是通过“AttributeProcessor”或者类似的东西,但是,嘿,如果我需要的话,我可以贡献;-)“它不支持数据注释或属性”,现在是这样的:D提交1/15的评论:向grid.AutoGenerateColumns添加ModelMetadata支持。好吧,这是个好消息!然后我也可以使用它,因为我总是想删除一些列,但仍然自动生成其余的列。我认为更好的办法是通过“属性处理器”或类似的考试,但嘿,如果我需要的话,我可以投稿;-)