首页 > 解决方案 > Asp .net MVC 5 Route Attribute with id between route

问题描述

我正在尝试在 MVC 中设置路由,以便在发布到以下 url 时

/organizations/55/repositories

我获得了组织 55 的所有存储库我尝试使用以下路线但无济于事,它永远不会到达控制器操作方法

[Route("/organizations/{id}/repositories")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Repositories(long id, OrganizationSearchParametersDTO parameters)

但是,如果我在 RegisterRoutes 方法中执行此操作,它会起作用:

routes.MapRoute("OrganizationControllerRoute", "organizations/{id}/repositories", new {controller = "Organizations", action = "Repositories"});

但我更喜欢使用属性运行它,因为这是我们的工作方式我做错了什么,有什么想法吗?

标签: c#.netasp.net-mvcasp.net-mvc-5

解决方案


如果您的routes.MapRoute(..)定义有效,但[Route(...)]属性无效,则表示您尚未在RouteConfig.cs文件中启用属性路由

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // Add the following line before any route definitions
        routes.MapMvcAttributeRoutes();

        ... // add routes.MapRoute(...) definitions as required
    }
}

推荐阅读