我用textarea
创建了一个简单的mvc webage。我向服务器提交数据然后我需要刷新视图。但textarea
始终包含浏览器数据,但我的模型已更改。
Debug告诉我:
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>
非常感谢。
答案 0 :(得分: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帮助器为您渲染。