我正在开发一个涉及通过ASP.NET MVC应用程序公开许多数据实体(超过200个)的项目。 我不想为每个实体模式编写视图,我想知道是否有一种方法可以让一个通用视图显示不同的模型(例如,一个读取模型属性(元数据)的视图并生成一个HTML表来显示实体清单。
答案 0 :(得分:4)
如果您只需要显示,则可以使用反射在几分钟内编写自己的通用渲染器。或者,您可以使用MvcContrib中的ModelVisualizer,或者来自MvcContrib的Grid,它可以执行Html.Grid(Model).AutoGenerateColumns()以自动将属性显示为列。它不支持DataAnnotations或属性,但您可以编写自己的扩展方法,该方法将使用反射基于某些属性生成Grid的列。您可以使用jqGrid的tableToGrid()方法快速将此网格转换为jqGrid。
如果您需要输入支持,可以选择以下几种方法:
也应该有商业工具。
答案 1 :(得分:2)
有两种选择:
您是否尝试过可以自动创建所需内容的Asp.net Dynamic data项目?
但是如果你想做你要问的事情,你总是可以创建一个没有强类型模型的单一视图。您将始终将数据传递给它ViewData
字典。然后,视图将解析该数据并显示所需内容。
<强>路由强>
您始终可以创建这两条路线:
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
字典并返回将使用它的视图。第二个将显示某个实体内某个记录的详细信息(如果您需要提供主/详细信息功能)。
答案 2 :(得分:0)
MVC Contrib有Model Visualizer,可以通过反映其属性来显示模型。如果你需要任何表现,那就不行了,但也许它会让你开始。