繁体   English   中英

ASP.NET MVC路由与参数

[英]asp.net mvc route with parameter

我正在尝试获取以下链接:

  • /(映射到AccountController / Index
  • / account / login(映射到AccountController / Login
  • / 2112 / emails(映射到EmailsController / Index操作和2112将是一个路由参数)
  • / 2112 / emails / list(映射到EmailsController / List操作,而212是路由参数)

我无法使路线正常工作,因为它们似乎相互冲突。 以下内容使我始终拥有路由参数,这不是我所需要的。 如果不提供数据库参数,它将不会绑定。

routes.MapRoute(
    name: "Default",
    url: "{database}/{controller}/{action}",
    defaults: new { database = UrlParameter.Optional, controller = "Account", action = "Index" }
);

顺序在您的路线配置中很重要。 在MVC中进行路由的关键是从最具体的路由开始并逐步完善。 同样,由于您对Emails控制器具有特定的路由规则,因此可以在URL参数中专门指定控制器的名称。 因此,在这里您可以这样做:

routes.MapRoute(
    name: "Emails",
    url: "{id}/Emails/{action}",
    defaults: new { controller = "Emails", action = "Index" },
    constraints: new { id = @"\d+" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Account", action = "Index" }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM