2009-08-14 84 views
0

當我有一個需要一個參數的路由時,Html.ActionLink出現問題。 我有以下的路由器global.asx:ASP.NET MVC中的自定義路由問題

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "materias", 
      "{controller}/{action}/{id},{titulo_materia}.html", 
      new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
     ); 

當我使用ActionLink的傳遞兩個參數,一切工作正常。 但是,當我嘗試使用我結束了類似第一路徑創建一個鏈接:

http://meusite.com/controller-name/[parameter],.html

編輯:

這裏是我真的有問題的操作鏈接:

<span class="editar"><%=Html.ActionLink("Editar", "Edit", "Users", new { id = this.Model.login }, null)%></span> 

這個鏈接是用於管理用戶數據的另一頁。

+0

安置自己的Html.ActionLink代碼 – 2009-08-14 02:23:54

+0

我編輯我的職務與ActionLink的代碼。 – Cleiton 2009-08-14 02:27:49

+0

如果您在第一條路線之前移動第二條路線,會發生什麼? – 2009-08-14 02:46:18

回答

1

首先,你應該把你的最通用的路線在底部。

那麼,如何這樣做喜歡的事:

routes.MapRoute(
     "materias", 
     "{materias}/{action}/{id},{titulo_materia}.html", 
     new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
    ); 

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

這樣,materias航線只適用於該materias控制器。 (未測試)

編輯: htmm ..嘗試使用加入少量馬丁的例子:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action",id = this.Model.login }); 
+0

我測試了它...但我得到相同的結果。當我嘗試創建一個鏈接使用ActionLink的兩個paramters我得到的東西,如「http://meusite.com/controllerName/[first-paramters]?titulo_materia=foobar – Cleiton 2009-08-14 03:33:39

+0

耶!我做到了,它工作得很好!謝謝! – Cleiton 2009-08-19 21:08:33

0

用途:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action" }); 
+0

@Martin,但我必須通過用戶的ID來獲取用戶信息。 – Cleiton 2009-08-14 02:31:16