Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 27609|Svar: 3

[WebAPI] WebAPI kan ikke binde flere parametre (SB og SB1) til indholdet af forespørgslen

[Kopier link]
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
Opslået på 16/08/2016 15.21.29 |
ModelBinder bør have en feature-klasse for ModelBinderAttribute

Lignende filtre
Opslået på 16/08/2016 15.21.44 |
Kom og besøg hver dag
Opslået på 16/08/2016 15.22.00 |
Giv mig lidt prestige
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com