这很奇怪,我不知道为什么。我有一个ViewModel为我的对象返回一些值,在渲染它时,它们有不同的值,但是,它们指向同一个属性:
<%: Model.myProperty %>
返回“25”,这就是我设置属性的原因。但是当它作为文本框呈现时,它返回“0”作为我的文本框的值!
<%: Html.TextBoxFor(f => f.myProperty) %>
知道为什么吗?该属性为十进制类型。感谢。
答案 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渲染主视图),不知何故,这个文本框从隐藏的视图中获取值! :)
感谢大家的期待。