在控制器上添加值后,如何使用ModelState进行验证?

时间:2014-05-02 17:19:12

标签: c# asp.net-mvc

我的控制器上有以下[post]创建方法:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include="Username","Name")] Admin admin)
    {
        // I assign the current date as the value to the HireDate property
        admin.HireDate = DateTime.Today;

        if (ModelState.IsValid)
        {
            // I do the insert
        }

        return View(admin);
    }

ModelState.IsValid false 的形式返回。 我查看了ModelState对象,发现 HireDate 属性中的错误是IS,因为它是一个非空字段,并且ModelState对象中的值仍为null。

我对ModelState了解不多,但我假设它只验证使用POST调用构建的模型。

有没有办法用我在控制器上分配的新数据“更新”ModelState对象(admin.HireDate = DateTime.Today)?

1 个答案:

答案 0 :(得分:1)

更合适的方法是在Page甚至呈现之前分配属性。因此,在返回原始视图的Create方法中,您可以执行此操作。

  public ActionResult Create()
  {
       Admin admin = new Admin();
       admin.HireDate = DateTime.Today;

       return View(admin);

  }

然后,您必须使用@Html.HiddenFor(x => x.HireDate)才能使View能够将其发送回Controller。

相关问题