ASP.NET MVC Html.TextBoxFor呈现的值不同于<%:Model.value%>

时间:2010-09-02 20:57:51

标签: asp.net-mvc asp.net-mvc-2

这很奇怪,我不知道为什么。我有一个ViewModel为我的对象返回一些值,在渲染它时,它们有不同的值,但是,它们指向同一个属性:

<%: Model.myProperty %>

返回“25”,这就是我设置属性的原因。但是当它作为文本框呈现时,它返回“0”作为我的文本框的值!

<%: Html.TextBoxFor(f => f.myProperty) %>

知道为什么吗?该属性为十进制类型。感谢。

3 个答案:

答案 0 :(得分:15)

在调用View或PartialView并传入模型之前尝试使用ModelState.Clear()。

这个问题在我发帖后发生在我身上。这是因为HTML帮助程序在检查实际模型之前首先从ModelState获取它们的值。似乎这应该是IMO的逆转。

答案 1 :(得分:1)

遇到同样的问题,我今天看了这篇文章(它解决了我的问题),并决定对此进行更多调查。所以,这是我发现的:

“ASP.NET MVC假定如果您在回复HTTP POST时呈现View,并且您正在使用Html Helpers,那么您最有可能重新显示验证失败的表单。因此,Html Helpers实际上在ModelState中检查在模型中查看之前在字段中显示的值。“By:Simon J Ince

如果您想了解更多相关信息,请访问以下链接: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

见。

答案 2 :(得分:0)

我的不好,似乎问题出现在HTML中,我从多个局部视图渲染视图,输入的一些ID是相同的(我隐藏编辑视图并使用jQuery渲染主视图),不知何故,这个文本框从隐藏的视图中获取值! :)

感谢大家的期待。