ASP.NET MVC如何在不显式传递模型的情况下将模型传递给视图

时间:2012-11-04 16:58:47

标签: asp.net asp.net-mvc

以下是我在如何对Controller进行验证时看到的一个示例:

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

如果存在验证错误,则返回View()方法称为,不带任何参数。显然,你的View和Model中有@ Html.ValidationSummary()具有所有必需的属性属性。

在使用验证摘要呈现视图时,保留并再次显示输入到表单中的数据。

我的问题:如何保存数据?因为它没有传递给视图

  

返回视图(响应);

非常感谢。

此致 维拉德

1 个答案:

答案 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();电话中传回模型,它看起来更正确,更容易阅读