MVC:我可以在控制器内的类中使用ModelState吗?

时间:2014-06-06 11:49:05

标签: c# asp.net-mvc

我可以在一个班级内完成吗?

    ...
    using System.Web.Mvc;
    ...

    public static class aaa 
    {

      public static test() {

         if (something) ModelState.AddModelError("", "test");
      }

    }

控制器内部呼叫:

...

public class mycontroler {

     public void Index() {
          ....
          aaa.test();
          ....
     }

}

有可能吗?我想控制控制器另一部分中的类内的代码。

3 个答案:

答案 0 :(得分:21)

您可以像这样传递模型状态:

public static void test(ModelStateDictionary ModelState)
{
    if (something) ModelState.AddModelError("", "test");
}

从你的控制器内部打电话:

aaa.test(ModelState);

答案 1 :(得分:1)

不,你不能。你在Controller中引用的是它的属性,而不是类。您仍然可以将其传递给作为参数调用的方法。

答案 2 :(得分:0)

在ASP.NET Core 2中运行良好:

//Controller
if (MyValidator.SaveValidation(model, ModelState))
        {
            myManager.Update(model);

            return Json(new
            {
                responseText = "Saved"
            });
        }

//Validator
public static class SaveDossierValidator
{
    public static bool SaveValidation(MyModel model, ModelStateDictionary modelState)
    {
        if (model.property == null) {
            modelState.AddModelError("property", "Error message");
        }

        return modelState.IsValid;
    }
}