2011-11-08 63 views
0

假設我有以下路由ASP.MVC 3路由:如何獲取包含默認操作的url?

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

現在,當您使用Url.Action( 「指數」, 「myController的」)生成一個URL,你會得到預期:/ myController的

但在一個例外的情況下,我想得到完整的網址/ MyController /索引 (不改變路由)...有誰知道這是可能的嗎?

+0

爲什麼你需要完整的網址(我只是好奇)? – jgauffin

+0

我必須處理可能影響的情況... – rekna

+0

是的,但我有興趣知道爲什麼? – jgauffin

回答

2

這是可能的。但是你需要修改路由。

  1. 創建派生Route
  2. 重寫GetVirtualPath()方法包括/index爲需要的網頁上的自己的路由類。
  3. 改爲使用路由類配置默認路由。
+0

這樣可以,但最終我決定在這些特定情況下將操作更改爲Edit,並且創建了一個重載的Url.Action(我正在使用T4MVC) : public static string Action(this UrlHelper url,ActionResult result,string fragment) 返回UrlHelper.GenerateUrl((string)null,(string)null,(string)null,(string)null,(string)null ,fragment,result.GetRouteValueDictionary(),url.RouteCollection, url.RequestContext,t後悔); } – rekna

1

恐怕這是不可能的。因爲兩個網址都會解決相同的控制器操作,所以這不應該成問題。