2009-10-15 124 views
3

我只有一个文本框和一个提交按钮的简单表单。表单基本上发送到不同的页面,并将文本框中的值作为查询字符串。当我点击提交按钮,查询字符串是这种格式,例如:ASP.NET MVC - 重写FormMethod.Get查询字符串?

mysite.com/?TargetCode=Test1 

我想它以这种格式显示:mysite.com/Test1

我已经有一个动作在我HomeController称取“TargetCode”作为查询字符串,并且我已经在Global.ascx.cs中为此设置了路由。我应该怎么做才能重新编写查询字符串,以便在URL中没有“?TargetCode =”?这里是我有的形式代码:

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

谢谢, 肯尼。

+0

完全重复:http://stackoverflow.com/questions/1573566/mvc-routing-doesnt-pickup-querystring – 2009-10-15 18:48:54

+0

其实我的其他问题是关于我的索引(目标字符串)动作不皮卡的查询字符串,它现在工作正常。这个问题是关于如何重写我的网址。谢谢:) – 2009-10-15 19:38:24

回答

0

我认为你必须使用jQuery来完成提交,否则你依赖于浏览器如何构造URL。 已更新在验证插件中包含挂钩。

$('#CodeForm').submit(function() { 
    var $form = $(this); 
    if ($form.valid()) { 
     window.location.href = $form.attr('action') 
            + '/' 
            + $('[name=TargetCode]').val(); 
    } 
    return false; 
}); 
+0

嗨tvanfosson,我也使用jQuery验证库,以确保文本框有它的价值(必填字段)。当我使用您发布的jQuery函数,它旁路了验证。以下是我有: $(文件)。就绪(函数(){ $( “#CodeForm”)验证(); $( '#CodeForm')提交(函数(){ 窗口。 .location.href ='/'+ $('[name = TargetCode]')。val(); return false; }); }); 谢谢, 肯尼。 – 2009-10-15 19:49:51

+0

因此在提交之前检查表单是否有效。 – tvanfosson 2009-10-15 20:10:16

+0

非常感谢,更新的代码很好地工作! – 2009-10-15 20:19:38