Asp.net mvc ASP.NET MVC搜索路径
我设置了一个搜索路径:Asp.net mvc ASP.NET MVC搜索路径,asp.net-mvc,routing,Asp.net Mvc,Routing,我设置了一个搜索路径: routes.MapRoute( "Search", "Search/{q}", new { controller = "Search", action = "Index" } ); 搜索表单有一个输入框和一个按钮。我想搜索一个得到如下 <% using(Html.BeginForm("Index", "Search", FormMethod.Get)) {%> <%:Html.TextBox("q")%> <
routes.MapRoute(
"Search",
"Search/{q}",
new { controller = "Search", action = "Index" }
);
搜索表单有一个输入框和一个按钮。我想搜索一个得到如下
<% using(Html.BeginForm("Index", "Search", FormMethod.Get))
{%>
<%:Html.TextBox("q")%>
<span class="query-button">
<input type="submit" value="select" /></span>
<% } %>
</div>
URL如下所示:
但我希望搜索结果是:
如何设置路由或Html.BeginForm仅使用表单并没有一种简单的方法。表单的预期功能是传输名称/值对-使用MVC不会改变这一点 因此,您的选择是:
- 使用Javascript重写表单的功能,方法是处理表单的提交事件,重定向到所需的URL并返回false以防止表单实际提交
- 不要使用表单和处理按钮的单击事件来执行重定向
您的路由已正确设置以处理此问题。或者您可以使用FormMethod.Post并在控制器中返回RedirectToActionResult这需要在服务器和客户端之间进行额外的往返,以便格式化url。不推荐。是的,这是额外的调用,但使用js也不是一个好方法。此外,建议不要将用户留在对数据进行某些更改(删除、编辑、添加)的同一页面上,因此按f5键将要求您再次发送数据。大家都在使用它。Daniel说得很好-你不能强迫表单为你发出get请求和更改URL。实现了js click事件来重定向。我用的是很酷的,看到了吗
public ActionResult Index(string q)
{
// search logic here
return View(new SearchResult(q));
}