以下是我在如何对Controller进行验证时看到的一个示例:
[HttpPost]
public ViewResult Create(MyModel response)
{
if (ModelState.IsValid)
{
return View("Thanks");
}
else
{
return View();
}
}
如果存在验证错误,则返回View()方法称为,不带任何参数。显然,你的View和Model中有@ Html.ValidationSummary()具有所有必需的属性属性。
在使用验证摘要呈现视图时,保留并再次显示输入到表单中的数据。
我的问题:如何保存数据?因为它没有传递给视图
返回视图(响应);
非常感谢。
此致 维拉德
答案 0 :(得分:4)
这是因为值已绑定到模型状态,并返回到视图。这与您无法更改模型值并再次返回视图的原因相同。这意味着,假设我的Viewmodel
上有以下属性public string Name {get;set;}
使用下面的控制器,我无法在不清除ModelState或更新模型状态的值的情况下更改ViewModel属性。试试吧!
[HttpPost]
public ViewResult Create(MyModel response)
{
response.Name = response.Name + "Some Random String"
return View();
}
name属性将保持不变。基本上,一旦发生ModelBinding,表单中的值(ViewModel)就会绑定到模型状态,这就是您不必将模型传递回视图的原因。
作为旁注,我总是在我的return View();
电话中传回模型,它看起来更正确,更容易阅读