Richtiges Senden von Aktionsparametern zusammen mit einer Abfrage in BreezeJs
getEntityList = function (predicate) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
return manager.executeQuery(query);
}
Ich möchte der Controller-Aktion jedoch zusätzliche Parameter übergeben, bevor ein abfragbares Ergebnis zurückgegeben wird:
[AcceptVerbs("GET")]
public IQueryable<Entity> EntityList(string actionParam) {
//here goes logic that depends on actionParam
//and returns IQueryable<Entity>
}
Wie wir aus der Dokumentation wissen:
Breeze konvertiert die Abfrage in eine OData-Abfragezeichenfolge wie die folgende:
? $ filter = IsArchived% 20eq% 20false & $ orderby = CreatedAt
Hier setzt das Problem an. Wie soll ich eine Abfrage erstellen, um param an die Controller-Aktion zu übergeben?
getEntityList = function (predicate, actionParam) {
var query = new entityModel.EntityQuery().from("EntityList");
if (predicate)
query = query.where(predicate);
if(actionParam)
// ???
return manager.executeQuery(query);
}
Ich habe bereits versucht, die Route festzulegen zu:routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{actionParam}",
defaults: new { query = RouteParameter.Optional }
);
und sendenactionParam durch Auftragen in avon Sektion,
var query = new entityModel.EntityQuery()
.from("EntityList/" + encodeURIComponent(actionParam));
Bei einigen Sonderzeichen schlägt die Codierung jedoch fehl, und es wird eine ungültige Anforderung ausgelöst.
Wie kann ich richtig sendenactionParam in einem solchen szenario? Bitte helfen Sie.