2010-09-02 71 views
6

不同的值这很奇怪,我不知道为什么。我有渲染时为我的对象,返回一些值一个ViewModel,他们有不同的价值观,然而,它们指向同一个属性:ASP.NET MVC Html.TextBoxFor呈现与<%:Model.value%>

<%: Model.myProperty %> 

返回“25”,这是我给自己定财产是。但是,当它作为一个文本框呈现时,它返回“0”作为我的文本框的值!

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

任何想法为什么?该属性是十进制类型。谢谢。

+0

你在什么时候将数值设置为25? – 2010-09-02 21:07:38

+0

该代码不会编译。错字?应该是'<%= Html.TextBoxFor(f => f.myProperty)%>'。 – GenericTypeTea 2010-09-02 21:10:37

+0

我有一些逻辑之前,以确定myProperty的值,然后像这样: var model = new MyViewModel {myProperty = 25}; 当我运行调试,它清楚地显示myProperty = 25,它反映时,它呈现为文本,但对于文本框,它不!谢谢。 – Saxman 2010-09-02 21:12:46

回答

0

我的不好,看起来问题是在HTML中,我有从多个部分视图呈现的视图,并且输入的一些ID是相同的(我隐藏编辑视图并呈现主视图jQuery),不知何故,这个文本框从隐藏的视图中获取价值! :)

感谢所有的期待。

15

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

这个问题发生在我后做一个职位。这是因为在检查实际模型之前,HTML帮助程序首先从ModelState获取它们的值。看起来像这个应该是逆转国际海事组织。

+0

我同意,在许多情况下这不是令人满意的行为。这里有另一个相关的问题:http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear。 – 2014-04-24 19:06:46

0

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

“ASP.NET MVC假定,如果您要呈现视图以响应HTTP POST,并且您正在使用Html Helpers,那么您最有可能重新显示表单验证失败。因此,HTML辅助实际检查中的ModelState在一个字段中显示的值,他们的模型看之前“通过:西蒙Ĵ因斯

如果你想了解更多关于这一点,访问波纹管链接: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

再见。