2011-07-26 114 views
0

我用textarea創建了一個簡單的mvc網頁。我提交數據到服務器,然後我需要刷新視圖。但textarea始終包含瀏覽器數據,但我的模型已更改。MVC渲染數據問題

調試顯示我:

Html.TextArea("EmailBody", Model != null ? Model.EmailBody : "Message") 
{<textarea cols="20" id="EmailBody" name="EmailBody" rows="2"> Message</textarea>} System.Web.Mvc.MvcHtmlString {System.Web.Mvc.{Dynamic}.DynamicMvcHtmlString} 

但在同一時間

Model != null ? Model.EmailBody : "Message" "123" string 

從實際數據即渲染頁面上的不同(實際數據是123,但我得到textarea的輸入舊數據) 。請指教。

問題解決了與

<textarea id="EmailBody" name="EmailBody"><%= Model.EmailBody %></textarea> 

非常感謝。

回答

2

我會用

@Html.TextAreaFor(model => model.EmailBody, ..... 

,並在我的控制器:

public ActionResult Index() 
{ 
    var viewModel = new MyViewModel(); 

    viewmodel.EmailBody = "Default"; 

    return this.View(viewModel); 
} 

[HttpPost] 
public ActionResult Index(MyViewModel inputViewModel) 
{ 
    string body = inputViewModel.EmailBody // Whatever.... 
} 

關鍵的一點是不要打擾傳遞一個NULL視圖模型到視圖,給它一些默認數據一起工作。這樣,您可以使用TextBoxFor()或TextAreaFor()等HTML助手爲您呈現。