2009-10-15 159 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