我有一个输入框,其中输入的值将被POST到Action参数。 但我也希望价值反映在这个网址上:
www.my-site.com/search/myquery
关于如何实现这一点的任何想法?
以下是代码..
搜索表单
<% using(Html.BeginForm("Index", "Search")) { %>
<%: Html.TextBox("query", "Enter Keyword") %>
<% } %>
Global Asax
routes.Add("Search", new Route(
"Search/{query}",
new { controller = "Search", action ="Index", query="" }
));
控制器
public ActionResult Index(string query)
{
return new EmptyResult()
}
答案 0 :(得分:2)
如果要将用户输入的值传递给查询字符串,则需要使用javascript。注册表单的submit
事件并将其附加到网址。另一种可能性是使用GET动词而不是POST,它将自动将其附加到查询字符串(但在这种情况下,您应该使用不同的动作名称,因为您不能有两个具有相同名称和相同动词的动作)。
<% using (Html.BeginForm("Index", "Search", FormMethod.Get)) { %>
<%: Html.TextBox("query", "Enter Keyword") %>
<input type="submit" value="OK" />
<% } %>