Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 27609|Svare: 3

[WebAPI] WebAPI kan ikke binde flere parametere (SB og SB1) til innholdet i forespørselen

[Kopier lenke]
Publisert på 16.08.2016 13:52:38 | | | |



I WebAPI kan forespørselskroppen (HttpContent) bare leses én gang, ikke caches, og kan kun leses videre.

For eksempel:

1. Forespørselsadresse: /?id=123&name=bob

    Server-side metode: void Action(int id, strengnavn) // Alle parametere er enkle typer, så de kommer alle fra url-en

2. Forespørselsadresse: /?id=123&name=bob

    Server-side metode: void Action([FromUri] int id, [FromUri] strengnavn) // Samme som ovenfor

                      void Action ([FromBody] strengnavn); [FormBody]-attributtet viser at hele kroppen leses som en streng som et argument

3. Forespørselsadresse: /?id=123

    Klassedefinisjon:

offentlig klasse Customer { // En kompleks objekttype definert
  offentlig strengnavn { get; sett; }
  offentlig int Age { get; sett; }
}

    Server-side metode: void Action(int id, Customer c) // Parameter-id leses fra spørringsstrengen, parameter c er en kompleks Customer-objektklasse, lest fra body via formatter

    Server-side metode: void action(Kunde c1, Kunde c2) // Feil! Flere parametere er komplekse typer og prøver alle å lese fra en kropp, som bare kan leses én gang

    Server-side metode: void action([FromUri] Kunde c1, Kunde c2) // Ja! I motsetning til handlingen ovenfor, vil den komplekse typen C1 bli lest fra URL-en og C2 fra brødteksten

4. ModelBinder-metoden:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Indikerer at en spesifikk modellbinder brukes til å løse parameteren

[ModelBinder(MyCustomBinder)] offentlig klasse SomeType { } // Bruk denne regelen på alle SomeType-typeparametere ved å erklære attributtet [ModelBidner(MyCustomBinder)] til en spesifikk type SomeType

void Action(SomeType c) // Siden typen c er SomeType, brukes egenskapene på SomeType for å bestemme modellbindingen



Sammendrag:

1. Standard enkle parametere sendes gjennom URL-parametere, med unntak:

1.1 Hvis ruten inneholder id-parameteren, sendes id-parameteren gjennom ruten;

1.2 Hvis parameteren er merket som [FromBody], kan parameteren være en enkel parameter, og klienten kan sende den via POST: $.ajax(url, '=value'), eller $.ajax({url: url, data: {'': 'value'}});

2. De standard komplekse parameterne (tilpassede entitetsklasser) sendes via POST, med unntak:

2.1 Hvis parameterverdien er merket som [FromUri], kan parameteren være en kompleks parameter;

3. En parameter merket [FromBody] kan kun vises én gang, en parameter merket som [FromUri] kan forekomme flere ganger, og hvis parameteren merket som [FromUri] er en enkel parameter, kan taggen fjernes.




Foregående:.NET Oracle multi-tabell spørringsmetode, en dum metode.
Neste:C# bruker refleksjon for å avgjøre om en egenskap tildeles
Publisert på 16.08.2016 15:21:29 |
ModelBinder bør ha en feature-klasse for ModelBinderAttribute

Ligner på filtre
Publisert på 16.08.2016 15:21:44 |
Kom og besøk hver dag
Publisert på 16.08.2016 15:22:00 |
Gi meg litt prestisje
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com