组合路由参数和Uri参数

时间:2015-04-20 12:39:35

标签: c# asp.net-web-api asp.net-web-api-routing

我试图将路线参数和uri参数结合起来。我试过了

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

和控制器

public class CqsController : ApiController
{
    public object Get(string type, [FromUri] Data data)
    {
        var dto = var ParseDto<Query>(type, data);
        return _invoke.Query(dto);
    }
}

但是我得到了

  

控制器上未找到任何操作&#39; Cqs&#39;与请求匹配。

@Patrick Hofman 像这样?得到同样的错误

config.Routes.MapHttpRoute(
    name: "CqsAPi",
    routeTemplate: "api/{controller}/{type}/{data}"
);

这是有效的

config.Routes.MapHttpRoute(
    name: "CqsAPi",
    routeTemplate: "api/{controller}/{type}/{data}",
    defaults: new { type = RouteParameter.Optional, data = RouteParameter.Optional }
);

Bummer 它没有用,这就是我想做的事。

地址 / API / CQS / FooQuery /?ID = 1

动作方法现在看起来像这样

public object Get(string type, [FromUri] JObject data)
{
    var t = typeof(Query).Assembly.GetType(type);
    var query = data.ToObject(t) as Query;

    return _invoker.Invoke(query);
}

FooQuery

public class FooQuery : Query<IEnumerable<Foo>>
{
    public int Id { get; set; }
}

现在问题是未设置Id

0 个答案:

没有答案