2013-03-26 63 views
0

我正在訪問採用不同數量參數的不同操作,但即使應用自定義路由,始終也會發生對相同操作的調用。 控制器數據-----使用自定義路由調用控制器操作始終指向相同的操作

[System.Web.Mvc.ActionName("Details1")] 
    public string Detail1(string Name) 
    { 
     return null; 
    } 

    [System.Web.Mvc.ActionName("Details2")] 
    public string Detail2(string Name, string secondName) 
    { 
     return null; 
    } 

定製路由

context.MapRoute(
      "M_default", 
      "controllername/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 

     ); 

     context.MapRoute(
      "name1", 
      "controllername/{Name}", 
      new { controller = "controllername", action = "Details1" } 

     ); 

     context.MapRoute(
      "name2", 
      "controllername/{Name}/{secondName}", 
      new { controller = "controllername", action = "Details2" } 

     ); 

的抗凍路由缺省,第二路由是詳情1,第三路線爲details2。

我調用這些從視圖$。員額,其網址是在 網址爲從詳情1 here

調用

"/api/controllername/?Name="+somename+"", 

網址爲Details2調用

"/api/controllername/?Name="+somename+"&secondName="+othername, 

我採取了參考什麼是可能的解決方案。任何建議,幫助將不勝感激。

回答

0

嘗試將您的默認路線放在最後。我認爲它抓住了一切。

+0

我想以這種方式仍是結果是一樣的,我已經把路線順序details2,細節,默認路由後。 – user1260967 2013-03-26 16:54:00

0

如果我理解正確,你的問題在於規則如何被框架解析。 您必須記住,框架從規則列表的頂部開始,一直下到一個條件匹配。反相網址的序列應該解決您的問題

您還可以使用this route debugger檢查的所有路由都正常工作

更新: 我的意思是創建這樣的路線。我剛看到你錯過了「api」部分。使用路由調試器檢查一切是否正確。

context.MapRoute(
     "name2", 
     "api/controllername/{Name}/{secondName}", 
     new { controller = "controllername", action = "Details2" } 

    ); 

    context.MapRoute(
     "name1", 
     "api/controllername/{Name}", 
     new { controller = "controllername", action = "Details1" } 

    ); 

    context.MapRoute(
     "M_default", 
     "controllername/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 

    ); 

這應該正確處理

/api/controllername/somename/someothername 

/api/controllername/somename 
+0

反轉路線順序在我的情況下不起作用...........你是否同意?@ Iridio – user1260967 2013-03-26 16:55:28

+0

更新了答案。對於延遲 – Iridio 2013-03-27 06:11:28

+0

感謝您的回覆....必須檢查此結構 – user1260967 2013-03-27 13:22:41

相關問題