2

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

我想调用一个具有三个参数的操作方法,但是当我使用多个参数调用它时遇到了 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。

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

谢谢你的帮助!

4

2 回答 2

0

它会是这样的:

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

它是包罗万象的参数。在行动中,您必须使用 '/' 拆分字符串

于 2013-05-03T16:53:47.203 回答
0

我自己发现了。(我希望我将其添加为单独的答案是正确的。)

正如预期的那样,答案很简单。使用上面的路由配置,您需要在 URL 中省略控制器名称,这样才能工作:

http://localhost:55462/Test/1/2/3
于 2013-05-06T22:16:12.700 回答