MVC模型验证

时间:2011-02-14 16:56:08

标签: asp.net-mvc-2

我有一个视图绑定到带有DataAnnotations的ViewModel进行验证,我有一个Action with Model输入参数(用于ModelBinding)。我的代码看起来像......

public ActionResult MyMethod (MyModelDefinition model, string ddlValue){
    if (ModelState.IsValid) { return RedirectToAction ("...");}

    // If my model is not valid i want to change it and return the View Again...
    model.field1 = "xpto";

    return View(model);
}

当我这样做时,我有验证错误(即使在我的field1中,女巫是必需的,我在我的View渲染之前填充它)。

我缺少什么?

感谢大家..

1 个答案:

答案 0 :(得分:2)

如果要在控制器中修改它,或者在渲染视图时,您需要从模型状态中删除该值,您用于呈现此值的HTML帮助程序将首先查看POSTed值,然后在该模型。这是预期的行为。

[HttpPost]
public ActionResult MyMethod(MyModelDefinition model, string ddlValue)
{
    if (ModelState.IsValid) 
    { 
        return RedirectToAction ("...");
    }

    // Remove field1 from ModelState if you intend to 
    // modify it in the controller
    ModelState.Remove("field1");
    model.field1 = "xpto";
    return View(model);
}