【问题标题】:how to route this in mvc web api?如何在 mvc web api 中路由它?
【发布时间】:2014-05-07 20:27:35
【问题描述】:

我有这个要求来映射网址

api/v1/Contact/12/tags

在上面的url中,Contact是控制器,12是contactId,tags是要调用的动作。

方法是这样的

[HttpGet]
public List<TagModel> Tags([FromUri]int contactId)

我曾经这样做过

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

I am getting the error "No HTTP resource was found that matches the request URI http://localhost:4837/api/v1/contact/12/tags"

我试过了

[HttpGet]
public List<TagModel> Tags(int contactId)

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

但是所有人都给出了相同的错误。但是当我这样打电话时

api/v1/Contact/12/tags?contactid=12

一切正常。但这不是我想要的。在联系之后指定contactId。谁能告诉我如何路由这个?

【问题讨论】:

    标签: asp.net-web-api routing asp.net-mvc-routing asp.net-mvc-5


    【解决方案1】:

    您的操作和路由中的参数名称必须匹配。 您可以将您的操作更改为:

    [HttpGet]
    public List<TagModel> Tags(int id)
    

    或将您的路线更改为:

    config.Routes.MapHttpRoute(
        name: "RouteForHandlingTags",
        routeTemplate: "api/v1/{controller}/{contactId}/{action}",
        defaults: new { },
        constraints: new { id = @"\d+" }
        );
    

    注意:您不需要像 int 这样的原始类型的 [FromUri]。

    【讨论】:

    • 该死!只是一个小错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2013-01-24
    相关资源
    最近更新 更多