Como enviar corretamente o parâmetro de ação junto com a consulta no BreezeJs
Atualmente estou chamando todas as consultas de dados, como mostrado nos documentos / exemplos do BreezeJs:
getEntityList = function (predicate) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
return manager.executeQuery(query);
}
Mas quero passar o parâmetro adicional para a ação do controlador antes que qualquer resultado pesquisável seja retornado:
[AcceptVerbs("GET")]
public IQueryable<Entity> EntityList(string actionParam) {
//here goes logic that depends on actionParam
//and returns IQueryable<Entity>
}
Como sabemos da documentação:
O Breeze converte a consulta em uma string de consulta OData como esta:
? $ filter = IsArchived% 20eq% 20false & $ orderby = CreatedAt
É aqui que o problema começa. Como devo criar consulta para passar o parâmetro para a ação do controlador?
getEntityList = function (predicate, actionParam) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
if(actionParam)
// ???
return manager.executeQuery(query);
}
Eu já tentei definir rota para:routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{actionParam}",
defaults: new { query = RouteParameter.Optional }
);
e enviandoactionParam aplicando-o em umde seção,
var query = new entityModel.EntityQuery()
.from("EntityList/" + encodeURIComponent(actionParam));
mas a codificação falha em alguns caracteres especiais e a solicitação incorreta está sendo lançada.
Como posso enviar corretamenteactionParam em tal cenário? Por favor ajude.