【问题标题】:Misbehaving Asp.net MVC helper methods (ie: Html.TextBox() and Html.Hidden())行为不端的 Asp.net MVC 辅助方法(即:Html.TextBox() 和 Html.Hidden())
【发布时间】:2012-01-26 10:03:05
【问题描述】:

我一直在尝试调试一个问题,并将其归结为这种情况:

当语句 Html.TextBox("ID", "What the heck..") 被执行时,我希望它会呈现:

<input id="ID" name="ID" type="text" value="What the heck.." />

但我得到一个 Guid 作为它的 TextBox 值,例如:

<input id="ID" name="ID" type="text" value="2e369d2c-071d-4733-8382-cc9e77d0b912" />

为什么 Asp.net MVC 输出 Guid?我没有覆盖 asp.net mvc 的框架方法。请参考截图。

更新: 这是另一个使用 Html.Hidden() 而不是 Html.TextBox() 的屏幕截图。我不能直接在 Watch 窗口中使用 Html.HiddenFor(),因为 HiddenFor() 使用 lambdas。

@Eric Petroelje 和@TLS:你们两个是对的。 TextBox() 和 Hidden() 从 POST 变量中检索 ID 的值,而不是从当前模型或函数的 value 参数中检索。不过,我预计与 HiddenFor() 和 TextBoxFor() 不同。我希望它只有在无法从当前模型中获取值的情况下才能从 POST 变量中获取值。我怎样才能做到这一点?

【问题讨论】:

  • 您的屏幕截图仅显示了您如何使用Html.HiddenFor 方法,但您的讨论谈到了Html.Textbox 方法。您能否举例说明您如何在代码中使用Html.Textbox
  • @TLS - 查看监视窗口。
  • @Mystere - 啊,好吧。现在我明白他在说什么了。调整屏幕截图的大小确实很难看到所有的位。
  • 感谢您的编辑和澄清。我认为@EricP 有正确的答案,所以他的答案可能应该是被接受的。

标签: asp.net-mvc


【解决方案1】:

也许您有一个名为ID 的 POST 变量,它是一个 GUID?如果是这种情况,HTML Helper 方法将使用该 POST 值。如果不存在 POST 值,它将回退到模型中的值。

【讨论】:

    【解决方案2】:

    您是正确的,Html.TextBox("ID", "What the heck..") 应该输出您在第一个示例中给出的属性值;但是,如果您使用的是 Html.TextboxFor 方法,那么您使用的是 MVC 助手,它动态加载 ID 属性的 value 并将其放入 HTML 中的 value 属性中.当您使用 Html.TextboxFor 方法时,如果您的 ID 属性是 Guid,则您的第二个示例是预期的 HTML 输出。

    【讨论】:

      猜你喜欢
      • 2011-01-18
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多