0

我很困惑,我沒有正確地標題這個問題。 這是我的問題。以下是我的申請中的路線。如何通過mvc中的路由匹配正確的操作方法?

//"list/author" => list by author 
routes.MapRoute("ListByAuthor", 
     "list/{author}", 
     new { controller = "MyCtrl", action = "MyAction" }); 

//"list/tag" => list by tag 
routes.MapRoute("ListBytag", 
     "list/{tag}", 
     new { controller = "MyCtrl", action = "MyACtion" }); 

//default 
routes.MapRoute("Default", 
     "{controller}/{action}/{id}", 
     new { controller = "MyCtrl", action = "MyAction", id = UrlParameter.Optional }); 

我通過提供RouteNameListByAuthorListByTag默認產生關於視圖的鏈接。我有兩個問題: -

  1. 將入站網址匹配到相應的操作方法不會發生。 每個請求都由第一條路線ListByAuthor處理。 例如,當我點擊標籤時,地址欄顯示正確的網址格式,例如domain/list/tag,但通過調試,我發現tag值分配給author參數。
  2. 雖然點擊其他鏈接的環境值不斷掛在URL。因此其他鏈接剎車並開始咬我。例如,當我點擊作者鏈接時,標籤鏈接變成domain/list/tag?author。網站上的解決方案之一建議在路由值中傳遞String.Empty,但它不起作用。但是,如果我改變了路線如下

    //"list/author" => list by author 
    routes.MapRoute("ListByAuthor", 
        "list/{author}", 
        new { controller = "MyCtrl", action = "MyAction", tag = "" }); //providing empty value to tag parameter in route 
    

它的工作原理然而,在路線明確提供默認值是大量的工作。 Plz建議我回答一些問題。我正在努力與路線。支持我贏得這場戰爭;)。在此先感謝

回答

0

我不是專家,但我認爲其原因是因爲你的路線是相同的,例如

yourdomain.com/list/authorxm,將匹配第一個路由

yourdomain.com/list/tagx,將匹配以及

因爲{作者}和{}標籤都只是參數

嘗試這樣的:

//"list/author" => list by author 
    routes.MapRoute("ListByAuthor", 
    "list/ByAuthor/{author}", 
    new { controller = "MyCtrl", action = "MyActionByAuthor" }); 

    //"list/tag" => list by tag 
    routes.MapRoute("ListBytag", 
    "list/ByTag/{tag}", 
    new { controller = "MyCtrl", action = "MyACtionByTag" }); 

    //default 
    routes.MapRoute("Default", 
    "{controller}/{action}/{id}", 
    new { controller = "MyCtrl", action = "MyAction", id = UrlParameter.Optional }) 
+0

我想過這個,但沒有提出任何合適的url格式... – Vivek 2014-10-07 03:19:28

相關問題