带参数的asp.net mvc路由

潘纳尔

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

  • /(映射到AccountController/ Index
  • / account / login(映射到AccountController/ Login
  • / 2112 / emails(到EmailsController/ Indexaction和2112的映射将是一个路由参数)
  • / 2112 / emails / list(映射到EmailsController/ Listaction和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" }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章