在控制器上添加值后,如何使用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)?
更合适的方法是在页面呈现之前分配属性。在返回原始视图的Create方法中你可以这样做
public ActionResult Create()
{
Admin admin = new Admin();
admin.HireDate = DateTime.Today;
return View(admin);
}
你将不得不使用@Html.HiddenFor(x => x.HireDate)
,以便视图能够将其发送回控制器。