【发布时间】:2016-06-21 18:03:16
【问题描述】:
我在尝试配置我的 ASP.NET MVC 项目以将多个 URL 路由到同一个视图时遇到了一些麻烦。给定以下 URL:
localhost:1234
localhost:1234/Products
localhost:1234/Products/1
localhost:1234/Products/abcd
localhost:1234/Products/whatever
我希望每个都将用户路由到同一个视图(例如Products.cshtml)。
按照this site 上的示例,我用特殊的路由属性装饰了我的控制器操作:
[HttpGet]
[Route("Products/{id?}")]
public ActionResult Products(string id)
{
return View();
}
在我的RouteConfig.cs 文件中,我设置了默认路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Products", action = "Products", id = UrlParameter.Optional }
);
localhost:1234 和 localhost:1234/Products 链接都有效,但这不适用于其余 URL。
【问题讨论】:
-
你记得在初始化代码的某个地方调用
MapMvcAttributeRoutes()吗? -
@MattiVirkkunen 哦,天哪,我没有。这样就解决了一半的问题,但是我调用这个函数,默认链接已经失效了。
-
您可以在默认路由之前添加另一个路由
url: "Products/{id}",(具有相同的默认值)并删除[Route("Products/{id?}")]属性 -
@MattiVirkkunen 最终,我得到了您的建议,并包含了一个带有空白 URL 参数的新
routes.MapRoute声明。你能发表你的评论作为答案吗?
标签: c# asp.net-mvc asp.net-mvc-5 routing