目前,我正在调用 BreezeJs 文档/示例中显示的所有数据查询:
getEntityList = function (predicate) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
return manager.executeQuery(query);
}
但是我想在返回任何可查询的结果之前将附加参数传递给控制器操作:
[AcceptVerbs("GET")]
public IQueryable<Entity> EntityList(string actionParam) {
//here goes logic that depends on actionParam
//and returns IQueryable<Entity>
}
正如我们从文档中了解到的:
Breeze 将查询转换为 OData 查询字符串,例如:
?$filter=IsArchived%20eq%20false&$orderby=CreatedAt
这就是问题开始的地方。我应该如何构建查询以将参数传递给控制器操作?
getEntityList = function (predicate, actionParam) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
if(actionParam)
// ???
return manager.executeQuery(query);
}
我已经尝试将路线设置为:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{actionParam}",
defaults: new { query = RouteParameter.Optional }
);
并通过在from部分中应用它来发送actionParam ,
var query = new entityModel.EntityQuery()
.from("EntityList/" + encodeURIComponent(actionParam));
但是在某些特殊字符上编码失败,并且抛出了错误的请求。
在这种情况下如何正确发送actionParam ?请帮忙。