gpt4 book ai didi

asp.net-mvc - Html.DisplayFor 和 Html.EditorFor 显示不同的值

转载 作者:行者123 更新时间:2023-12-01 02:38:38 24 4
gpt4 key购买 nike

我完全被难住了。
我正在 MVC2 中做一个搜索表单(我已经在这个项目上做了十几个其他的,一切正常。)
Global.asax 有这条路线:

  routes.MapRoute("OnlineHelpSearchIndex",
"Help/Search/{expression}/{page}",
new { controller = "OnlineHelp", action = "Search", expression = UrlParameter.Optional, page=1 });

该表达式是一个 base64 编码的字符串。我在 Controller 中对其进行解码,将其传递给具有名为 Expression 的属性的模型。 ,并将其显示在 TextBox 中的 PartialView 中。 (然后当用户单击链接或按 Enter 键时,我用 javascript 对字符串进行编码并将其发送到 "/Help/Search/"+value )

我有几个以这种方式构建的搜索框(每个搜索框都有一条路线 SomeModule/Search/{expression} ),其中一个不起作用。
<%:Html.DisplayFor(m => m.Expression)%>
<%: Model.Expression %>
<%:Html.TextAreaFor(m => m.Expression)%>
<%:Html.TextBoxFor(m => m.Expression)%>
<%:Html.EditorFor(m => m.Expression)%>

前两个显示正确的表达式,其他三个显示 url 中的表达式。
我尝试将一个字符串硬编码到模型中,前两个显示硬编码的字符串,其他三个显示 url 中的任何内容。 这怎么可能?
(我什至尝试禁用 JS,所以这是服务器端问题)

最佳答案

我知道这是一个旧线程,但我想无论如何我都会回答它。发生这种情况的原因是故意的,这是由于 ModelState。请参阅此问题以了解另一种情况:
Asp.net MVC ModelState.Clear

长话短说,您将表单数据发布到 Controller 并返回 View ,并使用助手。因此,MVC 假定这是验证失败并返回 ModelState 值,而不是模型数据的值。前两个显示正确,因为它们不是编辑器,其他 3 个是编辑器,因此它们显示的是 ModelState。

要么在 Controller 中调用 ModelState.Clear() 将其清除,要么实现另一种设计模式,例如 POST、重定向、GET。

关于asp.net-mvc - Html.DisplayFor 和 Html.EditorFor 显示不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com