【问题标题】:ASP.NET mvc multiple routingASP.NET mvc 多路由
【发布时间】:2013-01-16 12:05:19
【问题描述】:

我用谷歌搜索了很多具有相同问题的页面,但我无法解决我的问题。 所以我在控制器中有这个

public IEnumerable<questions> Get()
    {
        return (UOW.Questions.GetAll());
    }

    // GET api/questions/5
    public questions Get(int id)
    {
        return (UOW.Questions.GetById(id));
    }

    ////Basic Questions :: api/questions/basic
    [ActionName("basic")]
    public IEnumerable<questions> GetBasicQuestions()
    {
        return (UOW.Questions.GetBasicQuestions());
    }

    [ActionName("basic")]
    public questions GetBasicQuestionsById(int id)
    {
        return (UOW.Questions.GetBasicQuestions(id));
    }

这在 WEBApiConfig 中:

public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultController",
            routeTemplate: "api/{controller}"
        );

        config.Routes.MapHttpRoute(
            name: "DefaultControllerId",
            routeTemplate: "api/{controller}/{id}",
            defaults: null,
            constraints: new { id = @"^\d+$" }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultAction",
            routeTemplate: "api/{controller}/{action}"
        );

        config.Routes.MapHttpRoute(
            name: "DefaultActionId",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = RouteParameter.Optional }
        );
    }

当我输入 localhost/api/questions 和 localhost/api/questions/1 时,我不明白

给我多个路线错误...

谢谢你..

【问题讨论】:

标签: asp.net asp.net-mvc-4 routes asp.net-web-api-routing


【解决方案1】:

将您的路由更改如下:

config.Routes.MapHttpRoute(
    name: "DefaultController",
    routeTemplate: "api/{controller}",
    defaults: new { action = "GET" }
);

config.Routes.MapHttpRoute(
    name: "DefaultControllerId",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { action = "GET" },
    constraints: new { id = @"^\d+$" }
);

config.Routes.MapHttpRoute(
    name: "DefaultAction",
    routeTemplate: "api/{controller}/{action}"
);

config.Routes.MapHttpRoute(
    name: "DefaultActionId",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多