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

本文关键字:ModelState 何使用 验证 控制器 添加 | 更新日期: 2023-09-27 18:01:36

我有以下[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);
    }

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

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

是否有一种方法可以用我在控制器上分配的新数据"更新"ModelState对象?HireDate = DateTime.Today)?

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

更合适的方法是在页面呈现之前分配属性。在返回原始视图的Create方法中你可以这样做

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

你将不得不使用@Html.HiddenFor(x => x.HireDate),以便视图能够将其发送回控制器。