2012-11-23 40 views
2

這裏是複製問題的過程。如何使routelink返回正確的URL?

  1. 開始新的mvc 4項目。
  2. 以下行添加到的RegisterRoutes()方法只是 「默認」 的路線之前

    routes.MapRoute(
         name: "Test", 
         url: "Test/{action}", 
         defaults: new { controller = "Test", action = "Index" } 
    ); 
    
  3. 添加以下Index.cshtml和About.cshtml

    @Html.RouteLink("link to TestController", "Test") 
    

正如你所看到的那樣,這兩個頁面生成的html代碼是不同的。我希望URL是「/ Test」,它正確地爲Index.cshtml渲染,但它變成了「/ Test/About」for About.cshtml。

我的問題是,如果有任何記錄的方式來生成相同的正確的URL。以上示例僅供參考。我想使用路由表信息來生成菜單。

回答

3

似乎引擎正在從當前頁面(「索引」,「關於」)設置action路由值。因此,要解決這個問題的方法之一是「未設置」這條路值:

@Html.RouteLink("link to Test Controller", "Test", new { action = String.Empty }) 
+0

我發現,我必須指定'控制器= String.Empty'以及爲了得到它渲染默認URL作爲RouteConfig定義。 –

2

註冊您的路線

routes.MapRoute(
       name: "TestUrl", 
       url: "Test", 
       defaults: new { controller = "TestController", action = "TestAction" } 
      ); 

添加以下TestAction.cshtml

@Html.RouteLink("Test", "TestUrl") 

現在您的網址是/測試,希望這會幫助你。

1

最快的方法是隻指定一個空白的動作。

@Html.RouteLink("link to TestController", "", "Test") 

這將產生/Test