2011-06-10 283 views
0

標準ActionLink會生成類似mysite.com/rar/hello/1/2010-01-01/的內容,如果您希望它使用路由魔術。這對於錨標籤和使用Html.ActionLink是好的,但是,如果我想要使用GET請求獲得相同效果的表單,該怎麼辦?因此,一個形式看起來像如下:GET請求路由參數

@using(Html.BeginForm("MyAction", "MyController", new { id = 20, something = "2010-01-01" })) 

產生一個URL像site.com/20/2010-01-01代替mysite.com?id=20 &東西= 2010-01-01

這可以不使用JavaScript?我的路線是正確的,因爲ActionLink會生成正確的網址,但使用相同的參數,通過表單的GET請求會生成醜陋的網址。

乾杯

---編輯---

我做了同樣的問題在谷歌搜索,你猜怎麼着?這個答案是第一個。我甚至沒有記得問這個問題。

所以我又遇到了同樣的問題。這很簡單:

我點擊一個鏈接,它會帶我到一個網址,如site.com/10/100/Param。我有這些相同的路由值的形式,看起來是這樣的:

@using(Html.BeginForm("Action", "Controller", FormMethod.Get)) { 
    @Html.Hidden("param1", 10) 
    @Html.Hidden("param2", 110) 
    @Html.Hidden("param3", "MyOtherParam") 
} 

然後,當我提出這種形式,我希望看到新的路線爲site.com/10/110/MyOtherParam代替。

我能想到做到這一點的唯一方法是發佈到操作方法,然後從那裏重定向。

任何想法?

回答

0

對不起,它不起作用。在這裏找到答案:

How to make ASP.NET Routing escape route values?

+0

的ActionLink的我不知道這是如何承擔任何意義完全一致?我們在這裏根本不談論正斜槓。上述路線默認情況下完全有效。我正在談論與Global.asax中定義的路由約束匹配的GET請求 – Kezzer 2011-06-10 12:18:16

0

你有明確描述在Global.asax的這個路線?你會需要一個像

routes.MapRoute(
    "NameOfRoute", // Route name 
    "{controller}/{action}/{id}/{something}", // URL with parameters 
    new { controller = "My", action = "MyController" } 
); 

一個條目,以上述