【问题标题】:validate model state without passing model验证模型状态而不通过模型
【发布时间】:2019-04-10 13:41:26
【问题描述】:

我想使用以下代码验证模型

if (ModelState.IsValid)
  {

  }

问题是当我将模型对象传递给控制器​​动作时,它工作正常,但是当我使用以下代码调用控制器动作时

public ActionResult Save()
{
}

然后我的模型状态总是返回 true。所以请澄清我是否可以使用上面的代码检查 ModelState.IsValid。在我的情况下,保存方法很常见,它是从多个控制器调用的,所以模型不是固定参数。所以请告诉我如何验证模型。

【问题讨论】:

  • 您的操作方法是否总是采用模型类?上面的保存没有定义,所以如果你能提供更多细节,那会有所帮助。
  • 不。我不想将模型类传递给我的保存方法。我想使用下面的代码验证模型状态。public ActionResult Save() { If(ModelState.Isvalid) { //code有效 } } 后到这里

标签: asp.net-mvc-4


【解决方案1】:

MVC 使用模型来提取验证属性,作为验证的一种手段。您可以直接在控制器中显式调用ValidateModel()TryValidateModel(),但同样是使用模型验证属性来验证模型。如果您没有明确使用模型,您可以直接访问表单,如您可能知道的那样,或者可以手动验证输入,然后使用以下方法添加适当的模型验证错误:

ModelState.AddModelError("PropertyName", "ErrorMessage");

或者根据应用的结构使用这种技术:How to add ModelState.AddModelError message when model item is not binded

【讨论】:

    【解决方案2】:
    ModelState.Clear();
    Validate(model);
    if (ModelState.IsValid)
    {
       // Do something
    }
    

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 2023-04-07
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多