ASP.NET MVC路由:404具有多个参数

时间:2013-05-03 16:43:26

标签: asp.net-mvc asp.net-mvc-routing

我有一个非常基本的ASP.NET MVC(1)路由qeustion,但我现在找不到答案。

我想调用一个有三个参数的动作方法,但当我用多个参数调用它时,我遇到了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,string)具有相同的效果。 在第一种和第二种情况下,应用程序会抱怨null参数,其他情况会导致404。

我知道这个问题必须非常基本,但我还是不明白。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

会是这样的:

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

这是一个全能参数。在操作中,您必须使用'/'

拆分字符串

答案 1 :(得分:0)

我自己说出来了。 (我希望将其作为一个单独的答案添加它是正确的。)

正如所料,答案很简单。 使用上面的路由配置,您需要在URL中省略控制器名称,以便这样做:

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