2012-05-23 60 views
0

我有一個顯示StartDate和EndDate的視圖以及顯示兩個日期之間的天數的只讀字段。所有這些字段都綁定到我的模型,並在剃鬚刀視圖定義中使用標準的@ Html.EditorFor()方法。當我改變了其中一個日期,然後點擊保存後,保存更改後依賴字段不刷新

[HttpPost] 
ViewResult Edit([modeltype] editedModel){ 
... } 

方法計算並設置保存新的日期和計算值到數據庫之前,計算出的字段的新值,然後用更新返回查看模型。我遇到的問題是視圖不顯示新的計算值(而是顯示原始頁面加載時的原始計算值)。直到我離開並返回到該視圖 - 然後它正確顯示計算的值。任何想法我失蹤?瀏覽器可能在我的HttpPost後顯示頁面的緩存版本?如果是這樣,我可以禁用這種行爲嗎?

+2

什麼行動回報?我的第一個猜測是,在數據庫更新之後,您不會將更新後的模型版本返回到視圖。 – asawyer

+0

Edit方法的最後一行是Return View(editedModel);並使用斷點(和Debug.Writeline)我已經確認在該行上,「editedModel」肯定包含正確計算的值。 –

回答

1

Html幫手比實際的Model更喜歡ModelStateCollection。這意味着他們將顯示發佈的值,而不是您在控制器中更新的值。

所以,如果你想回到你在你的行動得到了相同的模型,你已經改變了一些你需要回到你的模型前清除ModelState的價值觀:

[HttpPost] 
public ViewResult Edit(MyModel editedModel) 
{ 

    //set some properties on editedModel 

    ModelState.Clear(); 
    return View(editedModel); 
} 
+0

工作就像一個魅力!謝謝。 –

+0

這很有趣,我從來沒有做過,但也從未有過這個問題。 – asawyer

+0

如果您有任何不幸 – Coops