3 回答
TA贡献1793条经验 获得超6个赞
这很正常,这就是HTML助手的工作方式。他们首先使用POST请求的值,然后使用模型中的值。这意味着,即使您在控制器操作中修改了模型的值(如果POST请求中存在相同的变量),您的修改也将被忽略,并将使用POSTed的值。
一种可能的解决方法是在试图修改值的控制器操作中,从模型状态中删除该值:
// remove the Step variable from the model state
// if you want the changes in the model to be
// taken into account
ModelState.Remove("Step");
model.Step = 2;
另一种可能性是编写自定义HTML帮助程序,该帮助程序将始终使用模型的值而忽略POST值。
还有另一种可能性:
<input type="hidden" name="Step" value="<%: Model.Step %>" />
TA贡献1804条经验 获得超7个赞
在编写向导时会遇到相同的问题,该向导在每个步骤都显示较大模型的不同部分。
来自“第1步”的数据和/或错误将与“第2步”混合,以此类推,直到我最终意识到ModelState被“怪罪”。
这是我的简单解决方案:
if (oldPageIndex != newPageIndex)
{
ModelState.Clear(); // <-- solution
}
return View(model[newPageIndex]);
- 3 回答
- 0 关注
- 607 浏览
添加回答
举报
