0

我需要从动态内容在 MVC3 中创建 html。我的场景是我需要创建一个视图,该视图可以根据用户和环境更改它显示的 html 字段。在我们准备好检索它们以供使用并且可以更改之前,可能的字段范围是未知的。这个基本功能在 MVC 中相当简单。但是,我想使用不显眼的客户端验证,这是我的问题出现的地方。

这是场景:我在模型中有一个复杂类型的列表。复杂类型实例存储有关需要创建的 html 字段的元数据。例如,复杂类型有一个 DataType 字符串属性,它告诉我们要创建的 html 元素类型。“文本”用于文本框的输入元素,“复选框”用于复选框的输入元素,“选择”用于选择元素等。复杂类型具有 Readonly、IsRequired、Value、Regex、MinLength、MaxLength 等属性...它包含我们创建一系列 HTML 元素并验证这些元素所需的一切。

所以复杂类型的列表被插入到控制器中的模型中,然后我们调用我们的视图。考虑到列表中每个复杂类型的复杂类型中的设置,视图需要显示适当的 html 元素。这可以通过创建一个新的帮助器来管理复杂类型或在视图中的循环中使用 switch 语句来检查复杂类型的 DataType 并使用适当的帮助器来实现。到目前为止,一切都很好。

然而,问题出现在我们想要使用客户端验证而不必自己创建 JavaScript 客户端不显眼的属性的地方,这是我想要实现的。有没有一种方法可以在不使用数据注释的情况下使用现有的 MVC 代码来创建不显眼的客户端验证?

例如覆盖现有的 ModelMetadataProvider DataAnnotationsModelMetadataProvider 并从我自己的助手中调用一个新方法。

实现上述场景的最佳方法是什么?

4

1 回答 1

0

您究竟是如何创建“动态 MVC3 html”的?您的意思是您只是在不使用实际视图的情况下创建 html 吗?由于验证是在模型绑定器中(而不是在 html 中)在服务器端处理的,因此动态 html 没有任何区别。在客户端,您只需添加 data-* 属性即可使其工作。

由于您没有提供任何您的 html 看起来的上下文,我们无法开始告诉您如何完成您想要的。

于 2012-03-29T18:03:31.370 回答