Cómo enviar correctamente el parámetro de acción junto con la consulta en BreezeJs
getEntityList = function (predicate) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
return manager.executeQuery(query);
}
Pero quiero pasar un parámetro adicional a la acción del controlador antes de que se devuelva cualquier resultado consultable:
[AcceptVerbs("GET")]
public IQueryable<Entity> EntityList(string actionParam) {
//here goes logic that depends on actionParam
//and returns IQueryable<Entity>
}
Como sabemos por la documentación:
Breeze convierte la consulta en una cadena de consulta OData como esta:
? $ filter = IsArchived% 20eq% 20false & $ orderby = CreatedAt
Aquí es donde empieza el problema. ¿Cómo debo crear una consulta para pasar param a la acción del controlador?
getEntityList = function (predicate, actionParam) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
if(actionParam)
// ???
return manager.executeQuery(query);
}
Ya he intentado configurar la ruta a:routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{actionParam}",
defaults: new { query = RouteParameter.Optional }
);
y enviandoactionParam aplicándolo en unadesde sección,
var query = new entityModel.EntityQuery()
.from("EntityList/" + encodeURIComponent(actionParam));
pero la codificación falla en algunos caracteres especiales y se está lanzando una mala solicitud.
¿Cómo puedo enviar correctamenteactionParam en tal escenario? Por favor ayuda.