我需要从动态内容在MVC3中创建html。我的场景是,我需要创建一个视图,该视图可以根据用户和环境更改它显示的html字段。在我们准备好检索字段以供使用并且可以更改之前,可能的字段范围是未知的。这个基本功能在MVC中相当简单。然而,我想使用不引人注目的客户端验证,这就是我的问题所在。
这是一个场景:我在模型中有一个复杂类型的列表。复杂类型实例存储关于需要创建的html字段的元数据。例如,复杂类型有一个DataType字符串属性,它告诉我们要创建的html元素类型。"Text"代表textbox的输入元素,"checkbox"代表checkbox的输入元件,"Select"代表Select元素等等。复杂类型具有Readonly、IsRequired、Value、Regex、MinLength、MaxLength等属性。它包含了我们创建一系列HTML元素并对这些元素进行验证所需的一切。
因此,复杂类型的列表被插入控制器中的模型中,然后我们调用我们的视图。视图需要显示适当的html元素,同时考虑列表中每个复杂类型的复杂类型中的设置。这可以通过创建一个新的帮助程序来管理复杂类型,或者在视图中的循环中使用一个switch语句来检查复杂类型的DataType并使用适当的帮助程序。到目前为止还不错。
然而,当我们想要使用客户端验证而不必自己创建JavaScript客户端不引人注目的属性时,问题就出现了,这正是我想要实现的。有没有一种方法可以让我在不使用数据注释的情况下使用现有的MVC代码来创建不引人注目的客户端验证?
例如,覆盖现有的ModelMetadataProvider DataAnnotationsModelMetadataProvider,并从我自己的助手中调用一个新方法。
实现上述情景的最佳方式是什么?
您究竟是如何创建"动态MVC3 html"的?你的意思是你只是在创建html而不使用实际的视图吗?由于验证是在模型绑定器(而不是在html中)的服务器端处理的,所以动态html没有什么区别。在客户端,您只需添加data-*属性即可使其工作。
由于您没有提供任何html的上下文,我们无法开始告诉您如何实现您想要的内容。