Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC-Html.TextBox-未通过ViewData字典设置值_Asp.net Mvc_Forms_Textbox - Fatal编程技术网

Asp.net mvc ASP.NET MVC-Html.TextBox-未通过ViewData字典设置值

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控件的搜索框(实际上是部分视图,但不确定是否相关)

 <%= 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();
}