今天有个很酷的主意,但我不知道该怎么做。
我正在asp.net MVC3 C#中逐页构建一个页面,保存到每个页面末尾的临时区域。
现在这个数据进入了一个包含几个可枚举类的类,所以它相对复杂。
现在,我希望用户能够在没有验证的情况下放入他们想要的任何东西(显然除了安全性),这样他们就可以投入任何他们想要的东西,但是我希望这可以进行软验证。
我想使用元数据进行验证,但是因为这提供了硬性验证,所以我不能将它放在表单用作模型的类(强类型)上。所以,我认为最好的方法是从表单上的类派生一个类,并在整个过程中抛出数据注释(我希望它可能以某种方式应用一个接口,但我假设它不是)
那么当用户想要将表单提交到我们的数据库时,我希望表单能够通过并验证。我想通过将没有数据注释的类转换为带有dataAnnotations的空数据来实现这一点,并且发生的任何错误(基本上当数据无效时)都能够在屏幕上列出并告诉他们来解决它。
现在,我希望能够做的另一件事是,当用户在其上时,我可以以某种方式使用带注释的类来软验证表单。所以我可以说“我们建议你把这个字段放进去”。而不是“这个领域不能为空”。
所以,最后:
我希望这一切都是可能的。这似乎是最干净的方式。如果有人能想到更好的方法来做到这一点,我全都是耳朵......或眼睛。
更新1 我的印象是dataAnnotations会阻止我输入任何不正确的数据。但是我现在正在做一些测试,似乎我能够以编程方式应用不正确的数据。即在必填字段中为空。那么数据注释只适用于页面上的验证吗?如果是这样,请忽略我的整个问题。
更新2 如果有人可以贡献,我仍在寻找答案
答案 0 :(得分:0)
我认为你不能用MVC中的验证框架做到这一点。验证是二进制操作;输入有效或不有效。用于表示验证过程中成功或失败的ValidationResult
类没有“可能”成员(使用术语),它是“是”还是“是”。
也就是说,由于您可以控制整个验证过程,因此您可以随时定义自己的一组数据注释属性,并在控制器中测试我认为是“警告”的内容,并做出相应的反应,也许通过使用显示字符串的通知区域,例如“我们建议您在此字段中输入数据”或类似的内容。
这假设您没有使用不显眼的客户端验证,我不确定如何规避。我正在谈论在控制器中使用ModelState
变量,使其超越IsValid
测试。