这是我在 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/