2010-09-23 96 views
1

我将现有系统移植到ASP.NET MVC2。在当前的传统应用程序中,用户可以从数十个可用字段中进行选择,以便为域模型中的不同实体定制CRUD表单,类似于ERP系统允许定制核心模块的方式。从ASP.NET MVC2控制器返回ad-hoc视图模型

我的问题:我正在寻找一个好的模式或ASP.NET MVC2中的这种行为的例子。在我看来,这很像是根据用户的选择动态地创建一个ViewModel,或者正确的方法是数据驱动的视图页面不是强类型的,我可以反映客户端的结果来确定字段标题或什么 - 如果这是有道理的:)。或者,也许我可以根据用户选择驱动AutoMapper或类似的动态@ runtime?

底层的领域模型是基于EF4的,我为ViewModel使用了一个简单的Repository pattern @ present。

TIA for any input!迈克尔

+0

澄清 - 定制CRUD表单并实际完成CRUD表单将是两个不同的步骤? – Ahmad 2010-09-23 17:09:31

+0

嗨艾哈迈德 - 是的,这是正确的:有效的'设计时间经验'为最终用户选择表单的字段,然后有该表单的CRUD使用。正如你所说的,两个不同的步骤。 – mcmSEA 2010-09-23 17:30:00

+0

它看起来像ASP.NET MVC3有一些有趣的ViewModel管道,我正在研究.NET4中的动态数据和Expandos - 我应该提到,我可以假设.NET4为这个项目,我们可以考虑MVC3,尽管它现在是alpha。 – mcmSEA 2010-09-23 17:31:11

回答

2

如果我没有发现其他任何相匹配的需求,并接着定制做到这一点,我想:

  • 使用视图模型的所有字段/不仅仅是用户挑选的人。
  • 同时通过视图模型和视图配置视图
  • 调用一些HTML辅助,对于配置中的每个项目添加一个字段,在模型中相应的属性
  • 的配置可为任一部分传递一个包含ViewModel或ViewData中的单独条目
  • 根据您的需要,构建/传递视图配置可以放入一个Action Filter中。或者,帮手可以直接拉它。

另一种方法是如果您需要完全自定义字段。我的意思是用户定义字段。如果是这种情况,那就不是在控制器级别输入的,所以我会将字段/值的列表传递给视图。该视图可以对添加字段的人员进行初步探讨。再次可以将其移至HtmlHelper。

+0

谢谢Eglasius。我认为你的方法可行。现在用户可以呈现的所有字段都是预定义的 - 他们可以更改标签以符合他们的术语,这也像ERP系统。但是我希望避免不必要地向CRUD视图发送大量数据 - 有很多可选字段。对于“设计时间”来说,发送所有字段听起来像是正确的做法,可能按照您描述的方式进行。 – mcmSEA 2010-09-23 17:58:16

+0

+1正是我在想什么,我觉得视图配置应该是视图数据的一个独特元素。主要原因在于,如果用户可以自定义最终的CRUD表单,那么这些选择将需要存储,很可能在维护配置时会涉及一些其他逻辑。 – Ahmad 2010-09-23 18:28:26

+0

嗨艾哈迈德 - 是的,我们需要存储每个用户的视图配置无论如何。但是,如果我采用这种方式并始终发送所有字段,它不是真正的动态或“特设”,它只是根据配置来控制可见性,对吗? – mcmSEA 2010-09-23 18:35:36

相关问题