【问题标题】:ASP.NET MVC Html.TextBoxFor rendered different value than <%: Model.value %>ASP.NET MVC Html.TextBoxFor 呈现的值与 <%: Model.value %> 不同
【发布时间】:2011-04-07 13:39:49
【问题描述】:

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

<%: Model.myProperty %>

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

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

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

【问题讨论】:

  • 您在什么时候将值设置为 25?
  • 该代码无法编译。错字?应该是&lt;%= Html.TextBoxFor(f =&gt; f.myProperty) %&gt;
  • 在此之前我有一些逻辑来确定 myProperty 的值,然后是这样的: var model = new MyViewModel { myProperty = 25 };当我运行调试时,它清楚地显示 myProperty = 25,并且在将其呈现为文本时会反映出来,但是对于文本框,不知何故它没有!谢谢。
  • @GenericTypeTea,这是我在这里发帖的错字。谢谢。
  • @Saxman - 没问题...不过我想我们可能需要在这里查看您的模型和属性。

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


【解决方案1】:

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

感谢大家观看。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    【解决方案3】:

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

    “ASP.NET MVC 假定,如果您正在呈现一个视图以响应 HTTP POST,并且您正在使用 Html 帮助程序,那么您很可能会重新显示一个验证失败的表单。因此,Html Helpers 在查看 Model 之前实际上会在 ModelState 中检查要在字段中显示的值。”作者:西蒙·J·因斯

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

    再见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多