显示错误的值

本文关键字:错误 显示 | 更新日期: 2023-09-27 18:07:00

好的,我这里有一个奇怪的。我知道值被正确地传递给属性,因为这工作得很好:

@Html.TextBox("Foo", Model.Foo, new { @class = "bar" })

现在如果我这样做:

@Html.TextBoxFor(m => m.Foo, new { @class = "bar" })

显示的值不正确。我完全不知道这个值是从哪里来的。对于某些页面,它显示小写版本的内容,其他时候,它显示旁边的文本框的值。我困惑。这是唯一一个这样做的文本框。我在页面上还有一个razor helper,它使用这个精确的值来显示页面的标题,并且显示正确。

我不介意在这个特定的例子中使用@Html.TextBox(),但我想弄清楚这一点。

还有谁遇到过这样随机的事情吗?我在这个页面上有很多控件这是唯一一个发生这种情况的

显示错误的值

天哪…我刚刚找到了罪魁祸首。它是url路由值!lol

在我的全局文件中,我有{something}/{whatever}/{id}/{foo}, {foo}是一个可选参数,只是为了使页面url看起来更人性化。

有趣的是,TextBoxFor中使用的表达式是从URL而不是视图模型中提取的。我以为它会在访问URL之前读取模型?甚至智能感知也从模型中提取。这是什么bug吗?

self: 总是确保属性有不同的名称!

这发生在我做一个ajax调用创建一个实体,成功后重新加载实体列表与部分视图。在重新加载期间,视图中的文本框将获取为列表中所有项目添加的新实体的值。将ModelState.Clear();添加到服务器代码中可以修复此问题。

你能从视图张贴一些代码,这是发生的地方,以及模型?它可能是与@Html.TextBoxFor()方法相反的东西