MVC 3验证动态表单字段。 ASP.NET

时间:2011-03-10 15:26:31

标签: asp.net validation asp.net-mvc-3

我正在开展一个非常动态的网站构建。我正在尝试做的是创建类似于可以从控制面板动态创建的调查 在控制面板中添加输入字段(这些字段保存在数据库中),然后用户看到的是我从数据库生成的表单。因此,如果我向数据库添加3个输入字段,则调查将包含3个字段。如果我添加20个字段,调查将有20个字段。

现在我的问题是我要验证这些字段,我希望能够使用标准验证流程。我无法使用验证规则创建模型,因为字段数和它们的名称是动态的,我知道的唯一事情是每个字段中预期的数据类型(此规则可在数据库中找到)。
在一般情况下,由于ValidationResult的内置验证流程等,我会得到无效的自动突出显示字段等等。

所以现在的问题是我可以以某种方式模拟验证的部分,然后将我与验证结果挂钩,如果无效,表单会打印错误消息并用给定的数据填充字段吗? / p>

此致 托拜厄斯

1 个答案:

答案 0 :(得分:3)

我要做的是创建某种expando模型,我自己的ModelMetadataProvider,并且可能还需要我自己的ModelValidator用于该模型。

然后,您可以使用Html.EditorFor和其他Html帮助程序轻松创建验证,因为它们使用元数据来创建验证。

顺便说一句,你可能还需要创建一个模型绑定器:)

元数据http://mgolchin.net/posts/21/dive-deep-into-mvc-modelmetadata-and-modelmetadataprovider

http://weblogs.asp.net/seanmcalinden/archive/2010/06/11/custom-asp-net-mvc-2-modelmetadataprovider-for-using-custom-view-model-attributes.aspx

http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html

验证http://dotnetslackers.com/articles/aspnet/Customizing-ASP-NET-MVC-2-Metadata-and-Validation.aspx#s2-validation

http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-the-New-Dependency-Injection-Support-Part2.aspx#s10-new-support-for-validator-provider

模型绑定器

http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx

这可能过度杀伤......但这些是你可以使用的扩展点。