ASP.NET MVC 2 Html.TextAreaFor Html.TextArea WEIRD Binding

时间:2011-06-09 02:58:53

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

这是我在ASP.NET MVC中的默认控件/帮助器集中遇到的最奇怪的行为

我发布了一个textarea值:

<%:Html.TextAreaFor(x=>x.Data.Body,new {style="display:none;", @class="ckeditor"}) %>

在我的控制器操作中,我为Data.Body返回一个不同的值(即model.Data.Body =“junk”),但我仍然在textarea框中看到最初发布的值。

如果我这样做

<textarea id="Data.Body" name="Data.Body" style="display:none;" class="ckeditor">
    <%=Model.Data.Body %>
</textarea>

它按预期工作。

有什么见解?

感谢。

1 个答案:

答案 0 :(得分:3)

这是设计 - HTML帮助程序将重新显示已发布的数据,而不是模型中的内容。 他们假设您将使用Post-Redirect-Get模式,并且在成功的帖子上您应该重定向到GET方法。如果您在帖子后重新显示信息,帮助者会假设出现错误并显示原始发布值,以便用户可以“更正”它们。

如果您不希望发生这种情况,可以使用ModelState.Clear,但我会考虑使用post-redirect-get的标准PRG模式进行编程。

我曾经遇到过这一段时间 - 请看我在这里的帖子: Updating value provider prior to TryUpdateModel