2014-02-13 92 views
0

我想使用一個將包含可變數量的參數的路由。控制者並不關心這些爭論,所以我很高興能夠獲得這些成果。MVC路由與*參數不匹配只有一個參數

以下的路徑,工作在幾乎所有情況下:

 routes.MapRoute(
      name: "Pdf", 
      url: "Pdf/{reportName}/{*parameters}", 
      defaults: new { controller = "Pdf", action = "Index" }, 
      namespaces: new string[1] { "Chd.Dms.Guides.Controllers" } 
     ); 

所以,當我打電話以下任一網址,我打我的控制器:

http://example/Pdf/SampleReport/Hello/World 

http://example/Pdf/SampleReport/Hello/World/And/Universe 

問題是,當它具有最少數量(只是一個額外的),它似乎不匹配這條路線:

http://example/Pdf/SampleReport/Hello/ 

爲什麼它不會捕獲這個URL?

+2

您還有其他路線在此之前定義過_before_嗎?如果您之前有默認的一個,它會與它匹配。 –

+0

啊哈 - 完全正確。有一個呼叫方法首先設置其他路線。謝謝。 – Fenton

+0

沒問題。沒有看到您的評論在那裏編輯,並仍在試圖找出答案。 –

回答

0

對於其他遇到此問題的人來說,路線本身絕對正確 - 但您必須確保在此路線之前沒有其他匹配的路線。

如果還有其他可能的匹配路線,您需要對它們進行重新排序 - 或者使它們更具體,以使它們不匹配。