MVC可重用的propertygrid

时间:2009-07-18 14:46:55

标签: asp.net-mvc reflection reusability

在我的Web应用程序框架(当前是WebForms)中,我有一个控件,其行为类似于经典的propertygrid。它使用对象ID(数据库键)初始化,然后读取元数据以确定对象的类型和对象的属性。它将属性,字符串属性显示为文本框,将bool属性显示为复选框,将枚举属性显示为下拉列表。在页面提交时,有一个控制方法ctrl.SaveData()将已更改的属性值保存回数据库。

WebForm控件树和事件模型非常好地支持这种方法。现在我问自己是否有可能为ASP.NET MVC实现类似的解决方案。主要目标是拥有一个通用的,可重复使用的组件,可以在各种情况下应用,而不会有太多麻烦。此外,该解决方案必须足够灵活,以便在单个页面上为多个对象放置组件的多个实例。这里自动生成的WebForms HTML ID也有帮助。

我对你的想法非常好奇!非常感谢您的回答!

1 个答案:

答案 0 :(得分:1)

您可以使用包含足够元数据的自定义ViewModel来识别正在编辑/保存的对象,从而实现此效果。您可以将此与渲染ViewModel的局部视图结合使用。主页面将使用ViewModel中的元数据将帖子定向到特定的控制器操作以保存该特定对象或将元数据传递回公共操作(可能是隐藏的输入),以便该操作可以选择正确的用于保存数据的表。

就个人而言,我不会采取这种做法。我的感觉是,你做出一个观点/行动越普遍,在不同情况下适应它的工作就越多。我已经为查看对象集做了类似的事情,但是对于详细视图或编辑,我喜欢使用更具体的模型和视图。