不带问号的ASP.NET MVC url搜索参数

不带问号的ASP.NET MVC url搜索参数,asp.net,asp.net-mvc,url,url-routing,Asp.net,Asp.net Mvc,Url,Url Routing,我的路线定义为: routes.MapRoute(“诱惑者”, “Users/Search/{Search}”,新增{ Controller=“Users”,操作= “索引”}) 表格如下: <% using (Html.BeginForm("Index", "Users/Search/", new { RouteValue = "AllUsers" }, FormMethod.Get, new { id = "searchForm" })){%> <input id="se

我的路线定义为:

routes.MapRoute(“诱惑者”,
“Users/Search/{Search}”,新增{ Controller=“Users”,操作= “索引”})

表格如下:

<% using (Html.BeginForm("Index", "Users/Search/", new { RouteValue = "AllUsers" }, FormMethod.Get, new { id = "searchForm" })){%>
 <input id="searchBox" name="search" type="text" />
 <input type="submit" id="submit" value="Search" /><%} %>

目前,正如预期的那样,这将创建一个
。/Users/Search/?Search=searchTerm

但我想要的是:
。/Users/Search/searchTerm


这怎么可能?我曾想过使用javascript,但这似乎有点脏。有没有更精简的方法来实现这一点?

HTML表单无法做到这一点。尽管您可以使用JavaScript模拟行为。

您可以:

<input type="submit" id="submit" value="Search" 
    onclick="$('form').attr('action', $('form').attr('action') + $('#searchBox').val());" />

看起来有点难看。您也不能使用表单并具有以下内容:

<input type="button" id="submit" value="Search" 
    onclick="window.location.href = 'search/' + $('#searchBox').val();" />


除此之外,您可以允许原始提交转到奇怪的url,但在控制器中使用RedirectToAction。

使用jQuery,您可以执行以下操作:

<script type="text/javascript">
        $(function(){
            $("#submit").click(function(){
                document.location.href = $("form").attr("action") + $("#searchBox").val();
                return false;
            });
        });
    </script>
routes.MapRoute("AllUsers",
"Users/Search/{id}", new { Controller = "Users", action= "Index"});

$(函数(){
$(“#提交”)。单击(函数(){
document.location.href=$(“表单”).attr(“操作”)+$(“#搜索框”).val();
返回false;
});
});

尝试如下更改:

<script type="text/javascript">
        $(function(){
            $("#submit").click(function(){
                document.location.href = $("form").attr("action") + $("#searchBox").val();
                return false;
            });
        });
    </script>
routes.MapRoute("AllUsers",
"Users/Search/{id}", new { Controller = "Users", action= "Index"});
表格如下:

<% using (Html.BeginForm("Index", "Users/Search/", 
  new { RouteValue = "AllUsers" }, FormMethod.Get, new { id = "searchForm" })){%>
  <input id="searchBox" name="id" type="text" />
  <input type="submit" id="submit" value="Search" /><%} %>


未测试,但“id”是默认路由值,不会创建“?名称=值”。

服务器端重定向如何