2011-07-26 10 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 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のviewmodelを渡すわざわざそれをで動作するようにいくつかのデフォルトのデータを与えていないです。そうすれば、TextBoxFor()やTextAreaFor()のようなHTMLヘルパーを使ってレンダリングすることができます。