0

我有一个名为“from”(起始日期)的查询参数,还有一个绑定到名为 From 的属性的输入

在我的 ViewModel 构造函数中,我将 From 属性设置为日期...

如果查询参数名称和属性名称不同,则此方法有效,但如果它们是相同的 MVC3 并带有一些魔法,则获取查询参数中的任何值并与之绑定,它不关心 From 属性中的值。为什么?这个 atuomagic 在很多层面上都是错误的!如何禁用它?

编辑:如果存在与输入具有相同 id 的查询字符串,则属性获取的值无关紧要 MVC 自动获取该值并将其分配给输入元素

4

2 回答 2

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

于 2012-01-07T01:48:30.453 回答
0

MVC 按约定工作,并通过名称将值绑定到模型。要了解发生了什么,我建议您阅读 Phil Haack 的这篇博客文章: Value Provider 和 Model Binder 有什么区别?

在同一个请求中包含两个具有相同名称的不相关元素是不好的做法,因为名称冲突很可能会导致意外问题。最佳做法是重命名这些元素之一,以便消除名称冲突。

于 2011-10-19T12:30:42.457 回答