c# - ASP.NET MVC 2 Html.TextAreaFor Html.TextArea 奇怪的绑定(bind)

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

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

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

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

在我的 Controller 操作中,我为 Data.Body 返回不同的值(即 model.Data.Body =“junk”),但我仍然在文本区域框中看到最初发布的值。

如果我这样做

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

它按预期工作。

有什么见解吗?

谢谢。

最佳答案

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

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

我不久前遇到过这个问题 - 请参阅我的帖子: Updating value provider prior to TryUpdateModel

关于c# - ASP.NET MVC 2 Html.TextAreaFor Html.TextArea 奇怪的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287648/

相关文章:

c# - .NET 4 MVC 2 带有注释警告而不是错误的验证

c# - .NET MVC Core 2.2 - 无法访问用户相关实体(外键)

c# - 在构造函数中向RichTextBox添加文本

c# - C#中的删除cookie问题

asp.net - 这是臭臭的错误处理吗?

asp.net-mvc - 将 MVC2 Helpers 移至 MVC3 razor View 引擎

javascript - 使用没有ajax的javascript调用C#代码隐藏方法

c# - 连接和析取辅助类

asp.net - Web.config 继承和虚拟目录

c# - 在 ASP.NET 5 (vNext) MVC 6 中实现自定义路由器