MVC渲染数据问题

时间:2011-07-26 14:07:31

标签: c# asp.net asp.net-mvc

我用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>

非常感谢。

1 个答案:

答案 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帮助器为您渲染。