2013-05-03 153 views
2

我有一個非常基本的ASP.NET MVC(1)路由qeustion,但我現在找不到答案。ASP.NET MVC路由:404與多個參數

我想調用一個具有三個參數的動作方法,但當我使用多個參數調用它時,我正在運行一個404。

路線是這樣的(我刪除了所有其他的途徑,但是默認的):

routes.MapRoute(
    "Test", 
    "{id}/{page}/{lineend}", 
    new { controller = "Basic", action = "Test" }, 
    new { id = @"\d+", page = @"\d+" } 
); 

的方法是這樣的:

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Test(int? id, int? page, string lineend) 
{ 
    // some code here 
    return new ViewResult(); 
} 

這是發生了什麼:

http://localhost:55462/Basic/Test/ 

作品

http://localhost:55462/Basic/Test/1 

工作

http://localhost:55462/Basic/Test/1/2 

給出了404

http://localhost:55462/Basic/Test/1/2/3 

給出了404

卸下約束或改變方法簽名(INT,INT,字符串)具有相同的效果。 在第一和第二種情況下,應用程序抱怨一個空參數,其他情況下導致一個404.

我知道這個問題必須是非常基本的,但我只是不明白它。

感謝您的幫助!

回答

0

這將是這樣的:

routes.MapRoute(
    "Test", 
    "{id}/{page}/{*lineend}", 
    new { controller = "Basic", action = "Test" }, 
    new { id = @"\d+", page = @"\d+" } 
); 

這是包羅萬象的參數。在行動中,你必須使用'/'拆分字符串

0

我把它弄出來了。 (我希望我把它作爲一個單獨的答案添加它是正確的。)

正如預期的那樣,答案很簡單。 通過上面的路由配置,您需要忽略URL中的控制器名稱,以便正常工作:

http://localhost:55462/Test/1/2/3