我有一个视图绑定到带有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渲染之前填充它)。
我缺少什么?
感谢大家..
答案 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);
}