显示错误的值
本文关键字:错误 显示 | 更新日期: 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()
方法相反的东西