我有一个非常基本的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。
我知道这个问题必须非常基本,但我还是不明白。
感谢您的帮助!
答案 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