Asp.net mvc ASP.NET MVC-Html.TextBox-未通过ViewData字典设置值
我在页面上有一个带有Html.TextBox控件的搜索框(实际上是部分视图,但不确定是否相关)Asp.net mvc ASP.NET MVC-Html.TextBox-未通过ViewData字典设置值,asp.net-mvc,forms,textbox,Asp.net Mvc,Forms,Textbox,我在页面上有一个带有Html.TextBox控件的搜索框(实际上是部分视图,但不确定是否相关) <%= Html.TextBox("query", ViewData["query"], new { style = "width: 90%;" })%> 但是,当它到达Html.TextBox时,原始查询值(在本例中带有下划线)将被保留。我可以看到编辑的值位于ViewData字段中,因此,例如,如果: query == "data_entry" 然后,在被传递到action方法
<%= Html.TextBox("query", ViewData["query"], new { style = "width: 90%;" })%>
但是,当它到达Html.TextBox时,原始查询值(在本例中带有下划线)将被保留。我可以看到编辑的值位于ViewData字段中,因此,例如,如果:
query == "data_entry"
然后,在被传递到action方法之后
ViewData["query"] == "data entry"
但是当它到达视图时,Html.TextBox中的值仍然是“data\u entry”。动作方法参数“query”和搜索框表单参数“query”之间似乎存在冲突。有人知道这里发生了什么,或者是否有其他方法传递值吗
此操作方法与发布搜索框数据所产生的操作是分开的 不知道这是否是问题所在,但我的第一个想法是将视图数据传回控制器
public ActionResult SearchQuery(string query)
{
ViewData["query"] = StringFunctions.ProperCasing(query.Replace("_", " "));
return view(ViewData):
}
Html.Textbox
helper首先查找ModelState
(,InputExtensions.cs第183行,HtmlHelper.cs第243行)。最简单的解决方案是删除“查询”的ModelState
:
public ActionResult SearchQuery(string query)
{
ViewData["query"] = StringFunctions.ProperCasing(query.Replace("_", " "));
return view(ViewData):
}
public ActionResult SearchQuery(string query)
{
ViewData["query"] = StringFunctions.ProperCasing(query.Replace("_", " "));
ModelState.Remove("query");
return View();
}