ASP.NET MVC条件验证

ASP.NET MVC条件验证,第1张

ASP.NET MVC条件验证

我已经通过处理控制器包含的“ ModelState”字典解决了这一问题。ModelState词典包含所有必须验证的成员。

解决方法如下:

如果您需要基于某个字段实施 条件验证 (例如,如果A = true,则需要B), 同时保持属性级别的错误消息传递
(对于对象级别的自定义验证器则不是这样),则可以实现此目的通过处理“ ModelState”,只需从其中删除不需要的验证即可。

…在某些班级…

public bool PropertyThatRequiredAnotherFieldToBeFilled{  get;  set;}[Required(ErrorMessage = "*")] public string DepentedProperty{  get;  set;}

…上课继续…

…在某些控制器动作中…

if (!PropertyThatRequiredAnotherFieldToBeFilled){   this.ModelState.Remove("DepentedProperty");}

这样,我们就可以实现条件验证,而其他条件保持不变。


更新:

这是我的最终实现:我在模型上使用了一个接口,并使用了 *** 作属性来验证实现了上述接口的模型。接口规定了Validate(ModelStateDictionary
modelState)方法。动作属性仅在IValidatorSomething上调用Validate(modelState)。

我不想使这个答案复杂化,所以我没有提到最终的实现细节(最后,这在生产代码中很重要)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4894399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存