2

这是我见过的关于如何在 Controller 上进行验证的示例之一:

[HttpPost]
public ViewResult Create(MyModel response)
{
    if (ModelState.IsValid)
    {
        return View("Thanks");
    }
    else
    {
        return View();
    }
}

如果存在验证错误,则在没有任何参数的情况下调用 return View() 方法。显然,您的视图中有 @Html.ValidationSummary() 并且模型具有所有必需的属性属性。

当视图与验证摘要一起呈现时,输入到表单中的数据被保留并再次显示。

我的问题:如何保存数据?因为它没有像

返回视图(响应);

非常感谢。

真诚的,弗拉德

4

1 回答 1

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();,它看起来更正确并且更容易阅读

于 2012-11-04T17:23:14.040 回答