我有一个名为“from”的查询参数(从日期开始) 以及绑定到名为From
的属性的输入在我的ViewModel构造函数中,我将From属性设置为日期...
如果查询参数名称和属性名称不同,这是有效的,但如果它们是相同的,带有一些魔法的MVC3会占用查询参数中的任何值并与之绑定,它不关心From中的值是什么财产..为什么?这个atuomagic在如此多的层面上是如此错误!如何禁用它?
编辑:无论属性获取什么值都无关紧要,如果存在与输入MVC相同的查询字符串,则自动获取该值并将其分配给输入元素
答案 0 :(得分:2)
您需要致电
ModelState.Clear();
从控制器操作返回之前。
问题是ModelState具有查询字符串中的值,并且在绑定发生时优先于模型中的值。
这是错误还是功能取决于您的观点...... http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx
答案 1 :(得分:0)
MVC按惯例工作,并通过名称将值绑定到模型。要了解正在发生的事情,我建议您阅读Phil Haack撰写的这篇博客文章:What’s the Difference Between a Value Provider and Model Binder?
在同一个请求中使用两个名称相同的不相关元素是不好的做法,因为名称冲突很可能会导致意外问题。最佳做法是重命名其中一个元素,以消除名称冲突。