C# 动态创建html控件(反射?)

C# 动态创建html控件(反射?),c#,asp.net-mvc,C#,Asp.net Mvc,我的web应用程序的第一部分是创建一个界面,用户可以在其中创建字段名以及与字段名关联的数据类型。 现在我需要创建第二部分,它从数据库中提取这些字段名以及与之相关联的数据类型,并使用这些字段名/数据类型动态创建html控件。例如,如果其中一个字段名为“birthdate”,数据类型为“datetime”,那么我的视图应该自动创建一个带有name属性“birthdate”的html文本框。如果字段名为“活动”且数据类型为布尔值,则视图应自动创建名称属性为“活动”的复选框。有人对如何在MVC中实现这一

我的web应用程序的第一部分是创建一个界面,用户可以在其中创建字段名以及与字段名关联的数据类型。
现在我需要创建第二部分,它从数据库中提取这些字段名以及与之相关联的数据类型,并使用这些字段名/数据类型动态创建html控件。例如,如果其中一个字段名为“birthdate”,数据类型为“datetime”,那么我的视图应该自动创建一个带有name属性“birthdate”的html文本框。如果字段名为“活动”且数据类型为布尔值,则视图应自动创建名称属性为“活动”的复选框。有人对如何在MVC中实现这一点有什么建议吗?我假设我需要使用反射,并且当我必须发回数据时,我必须发回一个json对象。

您可以使用mvc htmlhelpers。例如,一个灵活的htmlhelper for dropdownlist,它接受集合和其他参数。另一个htmlhelper获取集合并交付listbox和。。。。。
在您看来,您可以按类型使用此HTMLHelper。

我没有创建自己的HTMLHelper,但我做了类似的事情。我使用字符串生成器在控制器的get方法中动态创建html,然后将其发布到视图。

您必须创建自己的ModelMetadataProvider和ModelValidatiorProvider。这可能很有用:虽然这可能有效,但与mvc和OOP中的良好实践背道而驰。Helpers是一种更好的方法,可以等同于使用相同的字符串聚合方法来生成字段。我不能使用html Helpers的原因是因为我使用的是抽象模式。我需要动态创建的动态html控件基于模板。当用户在下拉列表中选择一个值时,该值通过一个ajax回传传递给我的控制器,该回传又传递给我的存储库。然后使用该值从存储库中获取正确的模板。然后,该模板用于在操作结果的字符串生成器中创建html控件。然后,该字符串作为用于创建控件的MVC字符串返回视图。