2012-11-10 198 views
0

我使用asp.net MVC3和具有兩個不同類型的在同一控制器請求和我在accesing正確的方法衝突asp.net MVC3路由

Firstcondition

routes.MapRoute(
     "Tag1", // Route name 
     "Tag/{no}", // URL with parameters 
     new { controller = "Tag", action = "TagCloud", no = UrlParameter.Optional } // Parameter defaults 
    ); 
面對錯誤

在這種情況下,用戶將訪問Tag Controller這樣http://xyz.com/tagORhttp://xyz.com/tag/3其中編號實際上是頁碼

Secondcondition

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

在這種情況下,用戶必須提供標籤的名稱,爲了得到這樣http://xyz.com/tag/mvc該標籤,其中mvc就是mvc是標籤名稱和3標籤ORhttp://xyz.com/tag/mvc/3名稱的詳細信息頁面是頁號是可選的,

現在問題是,兩個不同時工作,任何人在頂部運行,並且mvc跳過較低的一個。請提前幫助和感謝。

+0

試圖改變其順序,是指寫第一或副之前第二個反之亦然。 –

回答

0

嘗試這種情況:

routes.MapRoute(
    "Tag", // Route name 
    "Tag/{tag}/{page}", // URL with parameters 
    new { controller = "Tag", action = "Index", tag = "tag", page = UrlParameter.Optional }, 
    new { page = @"\d+" } 
); 

routes.MapRoute(
    "Tag1", // Route name 
    "Tag/{no}", // URL with parameters 
    new { controller = "Tag", action = "TagCloud", no = UrlParameter.Optional }, 
    new { no = @"\d+" } 
); 
0

如果更改兩個路徑定義的順序會發生什麼?添加約束到第一個{無}部分:必須號碼,如果不存在爲0

+0

第一個運行和mvc跳過另一個 – Smartboy

+0

所有請求去了第一個 – Smartboy

+0

我檢查我的代碼天氣其編號爲null或不。所以我認爲這不是問題 – Smartboy