ASP.NET MVC 2 Html.TextArea用于Html.TxtArea WEIRD绑定

本文关键字:Html TxtArea WEIRD 绑定 用于 TextArea MVC ASP NET | 更新日期: 2023-09-27 17:58:39

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

我发布了一个文本区域值,如下所示:

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

在我的控制器操作中,我为Data.Body返回了一个不同的值(即model.Data.Body="垃圾邮件"),但我仍然在文本区域框中看到最初发布的值。

如果我做

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

它按预期工作。

有什么见解吗?

谢谢。

ASP.NET MVC 2 Html.TextArea用于Html.TxtArea WEIRD绑定

这是经过设计的-HTML帮助程序将重新显示发布的数据,而不是模型中的数据。他们假设您将使用Post-Rerect-Get模式,并且在成功发布后,您应该重定向到Get方法。如果你在发布后重新显示信息,助手会认为存在错误,并显示原始发布值,以便用户可以"更正"它们。

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

我不久前遇到了这个-请参阅我的帖子:在TryUpdateModel 之前更新值提供程序