【问题标题】:Validate list of models programmatically in ASP.NET MVC在 ASP.NET MVC 中以编程方式验证模型列表
【发布时间】:2013-11-15 06:35:55
【问题描述】:

我想以编程方式一一验证模型列表。

我尝试了 TryValidateModel 但看起来它聚合了验证错误,因此当我遍历 10 个模型的列表时,如果第 5 个模型无效,则模型 6-10 TryValidateModel 返回 错误

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-web-api asp.net-mvc-validation


    【解决方案1】:

    您可以使用控制器方法ValidateModelTryValidateModel

    ValidateModel - 如果模型无效则抛出异常。

    TryValidateModel - 返回布尔值,表示模型是否有效。

    来自MSDN

    当一个模型被验证时,所有属性的所有验证器都是 如果至少一个表单输入绑定到模型属性,则运行。这 TryValidateModel 类似于 ValidateModel 方法,不同之处在于 TryValidateModel 方法不会抛出 如果模型验证失败,则 InvalidOperationExceptionexception。

    如果您逐一验证 模型列表,您可能希望通过调用 ModelState.Clear() 为每次迭代重置 ModelState。

    【讨论】:

    • 可以在模型没有被视图填充的情况下完成吗?换句话说,您的模型对象以其他方式填充。
    • @Matt 是的,你可以将任何你想要的模型传递给这些方法
    • 不幸的是,这对我不起作用 - 我可以在每次迭代中调用 for(var o in viewModels) ...、ModelState.Clear()、TryValidateObject(o, validation, validateResults) 和只要第一个对象有效,之后的每个对象都将作为有效对象通过,即使我确定它们是无效的。
    猜你喜欢
    • 2014-12-21
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多