C# 组合路由参数和Uri参数
我正在尝试组合路由参数和uri参数。我试过了C# 组合路由参数和Uri参数,c#,asp.net-web-api,asp.net-web-api-routing,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(s
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);
}
}
这很有效
config.Routes.MapHttpRoute(
name: "CqsAPi",
routeTemplate: "api/{controller}/{type}/{data}",
defaults: new { type = RouteParameter.Optional, data = RouteParameter.Optional }
);
真倒霉,没用,这就是我想做的
网址
/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);
}
食品查询
public class FooQuery : Query<IEnumerable<Foo>>
{
public int Id { get; set; }
}
现在的问题是没有设置Id为什么不向路由添加数据并删除Id,因为没有使用该Id?请提供请求的url和数据类定义?这就完成了技巧默认设置:新建{type=RouteParameter.Optional,data=RouteParameter.Optional}实际上数据是JObject类型的
public class FooQuery : Query<IEnumerable<Foo>>
{
public int Id { get; set; }
}