任何想法为什么我的参数被返回为null? 这是我的控制器。
[HttpPost]
[EnableQuery]
public IHttpActionResult LoadReports(ODataActionParameters parameters)
{
if (!ModelState.IsValid)
{
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
int key = (int)parameters["id"];
int year = (int)parameters["year"];
return Ok(_reportsRepository.GetReports(key, year).Single());
}
---我的实体集
builder.EntitySet<Report>("Reports");
- MyEntity绑定
var action = builder.Entity<Report>().Collection.Action("LoadReports");
action.Parameter<int>("id");
action.Parameter<int>("year");
action.ReturnsFromEntitySet<Report>("Reports");
- 我的网址调用
http://localhost:6064/odata/Reports/LoadReports?id=5&year=2011
- 我的错误消息
ReportsController.LoadReports(ODataActionParameters parameters) in \Controllers\ReportsController.cs:line 56
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
答案 0 :(得分:1)
不幸的是,只有v4支持可以使用GET执行的功能。
使用v3,如果要在模型中定义操作并发送GET请求,则需要编写唯一的路由约定,以将请求路由到右侧控制器中的正确方法。
默认操作路由约定仅接受POST。
在方法中,您可以从Request的查询部分而不是ODataActionParameters中获取参数。