关于路由:ASP.NET MVC-重写FormMethod.Get查询字符串?

ASP.NET MVC - Rewriting FormMethod.Get querystring?

我有一个简单的表单,只有一个文本框和一个提交按钮。表单基本上发送到另一个页面,文本框中的值作为querystring。当我单击提交按钮时,查询字符串采用这种格式,例如:

1
mysite.com/?TargetCode=Test1

我希望它以以下格式显示:mysite.com/Test1

我的HomeController中已经有一个动作,它以" TargetCode"作为查询字符串,并且我已经在Global.ascx.cs中为此设置了路由。我应该怎么做才能重写查询字符串,以使URL中没有"?TargetCode ="?这是我的表格的代码:

1
<% using (Html.BeginForm("Index","Home", FormMethod.Get, new { id ="CodeForm" }))


我认为您必须使用jQuery进行提交,否则您将依赖于浏览器构造URL的方式。已更新,其中包括钩入验证插件。

1
2
3
4
5
6
7
8
9
$('#CodeForm').submit( function() {
     var $form = $(this);
     if ($form.valid()) {
        window.location.href = $form.attr('action')
                                  + '/'
                                  + $('[name=TargetCode]').val();
     }
     return false;
});