我有这个 POST 动作:
[HttpPost]
public ActionResult GetReport(GetReportModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
return View("GetReport", new GetReportModel()
{
Identifier = "test",
Permission = true
});
}
当我发布我的表单并执行此操作时,结果视图中没有任何更改。我的意思是,TextBox
forIdentifier
没有我在操作中设置的“测试”字符串值。但如果我 clear ModelState
,视图将显示新值:
[HttpPost]
public ActionResult GetReport(GetReportModel model)
{
if (!ModelState.IsValid)
{
return View();
}
ModelState.Remove("Identifier");
ModelState.Remove("Permission");
return View("GetReport", new GetReportModel()
{
Identifier = "test",
Permission = true
});
}
我不明白为什么会这样?如果模型状态无效,为什么每个人都将模型返回给视图?例如,Microsoft 的默认项目模板具有以下代码:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
return RedirectToLocal(returnUrl);
}
// Why do they pass the model object to the view
// if it will be there anyway from post data?
return View(model);
}