die Steuerung Gegeben:WebAPI: benutzerdefinierter Parameter-Mapping
public class MyController : ApiController
{
public MyResponse Get([FromUri] MyRequest request)
{
// do stuff
}
}
Und das Modell:
public class MyRequest
{
public Coordinate Point { get; set; }
// other properties
}
public class Coordinate
{
public decimal X { get; set; }
public decimal Y { get; set; }
}
Und die API url:
/api/my?Point=50.71,4.52
Ich mag würde das Point
Eigentum der Typ Coordinate
wird aus dem Querystring - Wert 50.71,4.52
konvertiert, bevor der Wert erreicht wird Controller.
Wo kann ich mich an der WebAPI anmelden, um dies zu ermöglichen?
Das Problem mit, dass es, dass ich müssen jede einzelne Eigenschaft manuell binden. Nehmen wir an, das Modell hat auch eine 'int Radius'-Eigenschaft, die ich automatisch binden möchte. Wird das möglich sein? – David
AFAIK, ja, du musst alles binden. Schließlich teilen Sie dem System mit, wie die Querystring in eine Instanz eines Typs umgewandelt werden soll. Ich stelle mir vor, du könntest etwas Reflexions-Hokuspokus hinzufügen, um den Rest zu analysieren, aber das habe ich in diesem Zusammenhang nicht gemacht. – ssarabando
Es ist möglich, nur eine bestimmte Art von Eigenschaft zu binden, mehr Details: http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web- api – David