Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC可重用属性网格_Asp.net Mvc_Reflection_Reusability - Fatal编程技术网

Asp.net mvc MVC可重用属性网格

Asp.net mvc MVC可重用属性网格,asp.net-mvc,reflection,reusability,Asp.net Mvc,Reflection,Reusability,在我的web应用程序框架(当前为WebForms)中,我有一个行为类似于经典propertygrid的控件。它使用对象ID(数据库键)初始化,然后读取元数据以确定对象的类型和对象的属性。它将属性、字符串属性显示为文本框、布尔属性显示为复选框、枚举属性显示为下拉列表。在“提交”页面上,有一个控制ctrl.SaveData()的方法,该方法将更改的属性值保存回数据库 WebForm控件树和事件模型非常好地支持这种方法。现在我在问自己,是否有可能为ASP.NET MVC实现类似的解决方案。主要目标是拥

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

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


我对你的想法很好奇!谢谢你的回答

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


就我个人而言,我不会采取这种做法。我的感觉是,你的观点/行动越笼统,它就越能适应不同的环境。对于查看对象集,我也做过类似的工作,但对于细节视图或编辑,我喜欢使用更具体的模型和视图

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

就我个人而言,我不会采取这种做法。我的感觉是,你的观点/行动越笼统,它就越能适应不同的环境。对于查看对象集,我也做过类似的工作,但对于细节视图或编辑,我喜欢使用更具体的模型和视图