输入(由html助手生成)受POST数据影响是否正常?

时间:2014-07-01 09:23:33

标签: ajax asp.net-mvc post view

在MVC应用程序中,我们实施了一个小型论坛。这个论坛中的新帖子是ajaxed。 AJAX POST操作要么返回响应表单(部分视图),要么返回新的html,并将html格式化为JSON。 新帖子和表单均由this method的视图呈现。为表单提供的模型具有一些空值,但相应的输入存储从POST数据获取的值(我验证了生成的数据以确保它不是由浏览器完成的)。输入由html助手(例如TextBoxFor)生成。

所以我的问题是,这是MVC中的正常行为,如果是,那么我该如何使这些输入具有空值/空值(甚至某些特定值)?调试模型中的值与我设置的完全一样(它是null,但实际上任何值都会发生相同的事情),但是这个模型的输入仍然保存从POST数据中获取的值。

我测试了如何使用好的旧PartialView而不是将html渲染为字符串并通过JSON返回它,但结果完全相同(因此我用于渲染这些视图的方法应该与问题)。


我遇到了这个问题:View data dictionary overriding model data in ASP.NET MVC

但是根据我在我的应用程序中检查的内容,POST数据实际上并未存储在ViewData中且OP不是AJAX数据,因此重定向在他的情况下更有意义。

1 个答案:

答案 0 :(得分:0)

我遇到了这个post,它详细解释了这个问题并展示了处理它的方法。

总结一下。是的,这是POST操作期间htmlHelpers的正常行为。为了防止它,您可以在后期操作中运行ModelState.Clear();(最好在返回\渲染视图之前)。或者,也可以使用ModelState.Remove("PropName");删除一个字段,其中PropName是您不希望从POST数据传递的模型属性的名称。