我在Controller中有以下操作
public ActionResult Index(int? pageNumber)
public ActionResult Details(string seoFriendlyName)我想要有以下几条路线:
~/article/ -> Action = Index, pageNumber = 1
~/article/page-5 -> Action = Index, pageNumber = 5
~/article/page-1 -> ~/article/
~/article/foo -> Action = Details, seoFriendlyName = foo我尝试定义以下路由,但它不起作用:
routes.MapRoute(
null,
"article/page-{pageNumber}",
new { controller = "MyController", action = "Index", pageNumber = 1 },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article",
new { controller = "MyController", action = "Index", },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/{seoFriendlyName}",
new { controller = "MyController", action = "Details", },
new[] { "MyNamespace" }
);任何帮助都将不胜感激!
发布于 2012-01-24 21:35:52
你的要求是自相矛盾的。例如,如果您有一篇包含seoFriendlyName == "page-6“和实际pageNumber == 2的文章,应该选择哪条路由?
我建议您将您的需求更改为
~/article/ -> Action = Index, pageNumber = 1
~/article/page/5 -> Action = Index, pageNumber = 5
~/article/page/1 -> ~/article/
~/article/foo -> Action = Details, seoFriendlyName = foo然后,您将拥有以下路由:
routes.MapRoute(
null,
"article/page/{pageNumber}",
new { controller = "MyController", action = "Index", pageNumber = 1 },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article",
new { controller = "MyController", action = "Index", },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/{seoFriendlyName}",
new { controller = "MyController", action = "Details", },
new[] { "MyNamespace" }
);更新
回应评论:
对于这个特定的需求,你需要这样修改你的路由:
routes.MapRoute(
null,
"article",
new { controller = "MyController", action = "Index", pageNumber = 1 },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/page/{pageNumber}",
new { controller = "MyController", action = "Index", },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/{seoFriendlyName}",
new { controller = "MyController", action = "Details", },
new[] { "MyNamespace" }
);发布于 2012-01-24 21:45:03
你还没告诉我们,到底是什么出了问题。我看到的唯一一件事是,您为pageNumber参数设置了错误的值。
这应该能更好地工作:
routes.MapRoute(
null,
"article",
new { controller = "MyController", action = "Index", pageNumber = 1 },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/page-{pageNumber}",
new { controller = "MyController", action = "Index"},
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/{seoFriendlyName}",
new { controller = "MyController", action = "Details" },
new[] { "MyNamespace" }
);https://stackoverflow.com/questions/8987638
复制相似问题