【问题标题】:How to programatically execute the ModelState validation in MVC?如何以编程方式在 MVC 中执行 ModelState 验证?
【发布时间】:2016-09-15 15:46:30
【问题描述】:

我必须在特定模型提交后对其进行验证。

我知道有ValidateModel/TryValidateModelTryUpdateModel/UpdateModel,但这还不够好。

我需要对模型执行deep 模型状态验证。我尝试单独验证每个属性和内部属性,但 ModelState 条目没有获得显然必要的前缀。

【问题讨论】:

  • 你试过看输入键值对吗?在 POST 中,输入标签中的所有值都作为键值对提交给服务器。看看modelstate中的字典吧。
  • 我知道事情是如何完成的,我问的是如何让 MVC 进行验证,它也在 POST 上进行。
  • 为什么不能从 IValidatableObject 继承,然后在模型上调用 Validate()。
  • 因为我有自定义数据注释,这些注释经过测试并适用于执行服务器端和客户端验证的几种字段类型。我没有要求替代品。我要问的是是否有人可以分享一种再次验证整个模型的方法,就像模型绑定器在请求到达操作方法之前所做的那样。
  • >因为我有自定义数据注释<. ivalidateableobject validate>

标签: asp.net-mvc validation


【解决方案1】:

我使用了Validator.TryValidateObjectValidator.TryValidateProperty

这会将错误添加到输入参数validationResults,并且每次都会设置 ModelState(同时从先前字段中删除模型状态错误)。

这并不理想,但我得到了所有错误,并且对于每个错误,我构建了错误键并将其保存为一个列表。

最后,我清除模型状态并保存所有错误。有用。感谢@Fran 的建议。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2014-12-21
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2016-01-21
    • 2015-03-14
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多