2013-03-14 45 views
0

更新:Jacco的建議(下)爲我解決了這個問題。即,ModelState.Clear()是你的朋友。C#MVC4更改視圖屬性不改變數據查看HTML頁面

我有一個叫ScheduleController,看起來像這樣一個ActionResult控制器:

[HttpPost] 
public ActionResult Create(ScheduledCall scheduledcall) 

的scheduledCall模型對象有一個名爲content屬性。我有一個條件,我想更改content屬性的值,並將模型返回到供用戶在瀏覽器中閱讀的視圖。我發現儘管更改屬性的值很容易完成,但該視圖不會爲HTML顯示提供新的值。而是顯示用戶提交的內容。

實施例中控制器動作:

scheduledcall.Content = "Mark my words!"; 
ViewBag.message = scheduledcall.Content; 
return View(scheduledcall); 

在視圖,I輸出@ ViewBag.message(這是在該控制器設置爲匹配scheduledcall.Content屬性的值)。在視圖中的輸出是「標記我的話!」,但內容的文本區域(@ Html.TextAreaFor(model => model.Content))顯示用戶輸入的文本,而不是「標記我的話!」。

如何獲取視圖以在文本區域中顯示更新的值?

+0

「@ Model.Content」輸出什麼? – 2013-03-14 14:34:47

回答

2

我認爲你的答案就在這裏

Html.TextBoxFor does not show updated value in POST action

無論是ModelState.Clear();或者模型的複製應該做到這一點。

這也曾經是MVC框架中不那麼明顯的角落之一。

Regards,Jacco

+0

謝謝,Jacco。 ModelState.Clear()做了詭計! – 2013-03-14 16:14:02

2

可能不是你要找的答案。

而不是從您的POST返回呈現的視圖考慮使用Post/Redirect/Get模式。

郵政/重定向/獲取(PRG)是一個Web開發設計模式 防止一些重複的表單提交,創造一個更直觀的 接口,用於用戶代理(用戶)。 PRG以可預測的方式實現書籤和刷新按鈕,不會創建表單提交的重複 。