|
|
Opslået på 16/08/2016 13.52.38
|
|
|
|

I WebAPI kan anmodningskroppen (HttpContent) kun læses én gang, ikke caches, og kan kun læses videre.
For eksempel:
1. Anmodningsadresse: /?id=123&name=bob
Server-side metode: void Action(int id, strengnavn) // Alle parametre er simple typer, så de kommer alle fra url'en
2. Anmodningsadresse: /?id=123&name=bob
Server-side metode: void Action([FromUri] int id, [FromUri] strengnavn) // Samme som ovenfor
void Action([FromBody] strengnavn); [FormBody]-attributten viser, at hele kroppen læses som en streng som et argument
3. Anmodningsadresse: /?id=123
Klassedefinition:
offentlig klasse Customer { // En kompleks objekttype defineret offentlig strengnavn { get; sat; } offentlig int Age { get; sat; }
}
Server-side metode: void Action(int id, Customer c) // Parameter-id læses fra forespørgselsstrengen, parameter c er en kompleks Customer-objektklasse, læst fra kroppen gennem formatter
Server-side metode: void action(Kunde c1, Kunde c2) // Fejl! Flere parametre er komplekse typer og forsøger alle at læse fra en krop, som kun kan læses én gang
Server-side metode: void action([FromUri] Kunde c1, Kunde c2) // Ja! I modsætning til handlingen ovenfor vil den komplekse type C1 blive læst fra URL'en, og C2 vil blive læst fra selve teksten
4. ModelBinder-metoden:
void Action([ModelBinder(MyCustomBinder)] SomeType c) // Angiver, at en specifik modelbinder bruges til at løse parameteren
[ModelBinder(MyCustomBinder)] offentlig klasse SomeType { } // Anvend denne regel på alle SomeType-typeparametre ved at erklære attributten [ModelBidner(MyCustomBinder)] til en bestemt type SomeType
void Action(SomeType c) // Da typen af c er SomeType, anvendes karakteristikane på SomeType til at bestemme dens modelbinding
Resumé:
1. De standard simple parametre sendes gennem URL-parametre, med undtagelser:
1.1 Hvis ruten indeholder id-parameteren, sendes id-parameteren gennem ruten;
1.2 Hvis parameteren er markeret som [FromBody], kan parameteren være en simpel parameter, og klienten kan sende den via POST: $.ajax(url, '=value') eller $.ajax({url: url, data: {'': 'value'}});
2. De standard komplekse parametre (brugerdefinerede entitetsklasser) sendes via POST, med undtagelser:
2.1 Hvis parameterværdien er markeret som [FromUri], kan parameteren være en kompleks parameter;
3. En parameter mærket [FromBody] må kun optræde én gang, en parameter markeret som [FromUri] kan forekomme flere gange, og hvis parameteren markeret som [FromUri] er en simpel parameter, kan tagget fjernes. |
Tidligere:.NET Oracle multi-table forespørgselsmetode, en dum metode.Næste:C# bruger refleksion til at afgøre, om en egenskab tildeles
|