2011-11-24 58 views
1

我試圖在用戶提交表單後將用戶重定向到特定地址。 我用的是下面的代碼在我的內容控制器:如何從控制器內重定向到特定的URL?

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", Id = business.BusinessID })); 

它創建這樣一個URL: www.x.com/Content/Business?Id=13

我真的想要的是這樣的: www.x.com/Content/Business/13

我真的不希望查詢字符串與分隔?但要與其他網址保持一致。

有無論如何這樣做嗎?

+0

見回答: [RedirectToAction沒有查詢字符串MVC] [1] [1]:http://stackoverflow.com/questions/5336536/redirecttoaction-without-querystring-mvc –

回答

2

代碼實際上應該是相同的東西,但需要注意的是Global.asax文件中,我設置我的路由表,我需要有以下一段代碼,以便產生我想要的結果。請注意第三個URL參數{參數}

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{parameter}", // URL with parameters 
       new { controller = "Tokens", action = "Index", parameter = UrlParameter.Optional } // Parameter defaults 
      ); 

與該代碼,我只需要使用變量「參數」,而不是「ID」在我的代碼:

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", parameter= business.BusinessID })); 

這是非常重要的使用與您在MapRout()函數中定義的變量相同的名稱。

這樣做,我有我想要的結果:

www.x.com/Content/Business/13

從這個問題
+0

這是正確的 - 路由中定義的參數的名稱應該與'new {}'中的屬性名稱匹配。 –

0

對我來說,你的代碼行生成你期待的鏈接,你的路由設置是否正確?

+0

是的,你是對的。我將ID的默認命名更改爲參數。我應該改變我的控制器功能,以同樣的事情。這個問題就這樣解決了。 – Ben

1

檢查了這一點

返回RedirectToAction( 「商務」, 「內容」,新{ID = business.BusinessID});

+0

這是做同樣的事情。你只是在調用一個不同的超載。 –

相關問題