我有一个显示StartDate和EndDate的视图,以及一个显示两个日期之间天数的只读字段。使用剃刀视图定义中的标准@ Html.EditorFor()方法将所有这些字段绑定到我的模型。当我更改其中一个日期并单击“保存”时,
[HttpPost]
ViewResult Edit([modeltype] editedModel){
... }
方法在将新日期和计算值保存到数据库之前计算并设置计算字段的新值,然后返回带有更新模型的视图。我遇到的问题是视图没有显示新的计算值(而是显示初始页面加载时的原始计算值)。直到我离开并返回到该视图 - 然后它正确显示计算值。知道我错过了什么吗?浏览器是否可能在我的HttpPost之后显示页面的缓存版本?如果是这样,我可以禁用该行为吗?
答案 0 :(得分:1)
Html助手比实际ModelStateCollection
更喜欢Model
。这意味着它们将显示已发布的值,而不是您在控制器中更新的值。
因此,如果您想要返回您在操作中获得的相同模型,并且在返回模型之前更改了需要清除ModelState
所需的一些值:
[HttpPost]
public ViewResult Edit(MyModel editedModel)
{
//set some properties on editedModel
ModelState.Clear();
return View(editedModel);
}