我正在开展一个非常动态的网站构建。我正在尝试做的是创建类似于可以从控制面板动态创建的调查 在控制面板中添加输入字段(这些字段保存在数据库中),然后用户看到的是我从数据库生成的表单。因此,如果我向数据库添加3个输入字段,则调查将包含3个字段。如果我添加20个字段,调查将有20个字段。
现在我的问题是我要验证这些字段,我希望能够使用标准验证流程。我无法使用验证规则创建模型,因为字段数和它们的名称是动态的,我知道的唯一事情是每个字段中预期的数据类型(此规则可在数据库中找到)。
在一般情况下,由于ValidationResult的内置验证流程等,我会得到无效的自动突出显示字段等等。
所以现在的问题是我可以以某种方式模拟验证的部分,然后将我与验证结果挂钩,如果无效,表单会打印错误消息并用给定的数据填充字段吗? / p>
此致 托拜厄斯
答案 0 :(得分:3)
我要做的是创建某种expando模型,我自己的ModelMetadataProvider,并且可能还需要我自己的ModelValidator用于该模型。
然后,您可以使用Html.EditorFor和其他Html帮助程序轻松创建验证,因为它们使用元数据来创建验证。
顺便说一句,你可能还需要创建一个模型绑定器:)元数据: http://mgolchin.net/posts/21/dive-deep-into-mvc-modelmetadata-and-modelmetadataprovider
http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html
模型绑定器:
http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx
这可能过度杀伤......但这些是你可以使用的扩展点。