Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 27609|Atbildi: 3

[Tīmekļa API] WebAPI nevar saistīt vairākus parametrus (SB un SB1) ar pieprasījuma saturu

[Kopēt saiti]
Publicēts 16.08.2016 13:52:38 | | | |



WebAPI pieprasījuma pamattekstu (HttpContent) var lasīt tikai vienu reizi, nevis kešatmiņā, un to var lasīt tikai uz priekšu.

Piemēram:

1. Pieprasījuma adrese: /?id=123&name=bob

    Servera puses metode: void Action(int id, virknes nosaukums) // Visi parametri ir vienkārši tipi, tāpēc tie visi nāks no URL

2. Pieprasījuma adrese: /?id=123&name=bob

    Servera puses metode: void Action([FromUri] int id, [FromUri] virknes nosaukums) // Tāds pats kā iepriekš

                      void Action([FromBody] virknes nosaukums); Atribūts [FormBody] parāda, ka viss pamatteksts tiek lasīts kā virkne kā arguments

3. Pieprasījuma adrese: /?id=123

    Klases definīcija:

publiskā klase Klients { // Definēts komplekss objekta tips
  publiskā virkne Nosaukums { get; komplekts; }
  publiskais int Vecums { iegūt; komplekts; }
}

    Servera puses metode: void Action(int id, Klients c) // Parametra ID tiek nolasīts no vaicājuma virknes, parametrs c ir sarežģīta klienta objektu klase, kas tiek lasīta no ķermeņa līdz formatētājam

    Servera puses metode: anulēt darbību (klients c1, klients c2) // Kļūda! Vairāki parametri ir sarežģīti tipi, un visi mēģina lasīt no ķermeņa, ko var nolasīt tikai vienu reizi

    Servera puses metode: void action([FromUri] Klients c1, Klients c2) // Jā! Atšķirībā no iepriekš minētās darbības, kompleksais tips C1 tiks nolasīts no URL, un C2 tiks nolasīts no pamatteksta

4. ModelBinder metode:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Norāda, ka parametra atrisināšanai tiek izmantots konkrēts modeļa saistītājs

[ModelBinder(MyCustomBinder)] publiskā klase SomeType { } // Lietojiet šo kārtulu visiem SomeType tipa parametriem, deklarējot atribūtu [ModelBidner(MyCustomBinder)] noteiktam tipam SomeType

void Action(SomeType c) // Tā kā c tips ir SomeType, SomeType raksturlielumi tiek izmantoti, lai noteiktu tā modeļa saistīšanu



Kopsavilkuma:

1. Noklusējuma vienkāršie parametri tiek nodoti caur URL parametriem, izņemot šādus gadījumus:

1.1 Ja maršrutā ir id parametrs, id parametrs tiek nodots caur maršrutu;

1.2 Ja parametrs ir atzīmēts kā [FromBody], parametrs var būt vienkāršs parametrs, un klients to var nodot caur POST: $.ajax(url, '=value') vai $.ajax({url: url, data: {'': 'value'}});

2. Noklusējuma kompleksie parametri (pielāgotas entītiju klases) tiek nodoti caur POST, ar izņēmumiem:

2.1 Ja parametra vērtība ir atzīmēta kā [FromUri], parametrs var būt sarežģīts parametrs;

3. Parametrs, kas apzīmēts ar [FromBody], ir atļauts parādīties tikai vienu reizi, parametrs, kas atzīmēts kā [FromUri], var tikt parādīts vairākas reizes, un, ja parametrs, kas atzīmēts kā [FromUri], ir vienkāršs parametrs, tagu var noņemt.




Iepriekšējo:.NET Oracle vairāku tabulu vaicājuma metode, muļķīga metode.
Nākamo:C# izmanto atstarošanu, lai noteiktu, vai rekvizīts ir piešķirts
Publicēts 16.08.2016 15:21:29 |
ModelBinder jābūt ModelBinderAttribute funkciju klasei

Līdzīgi filtriem
Publicēts 16.08.2016 15:21:44 |
Nāciet ciemos katru dienu
Publicēts 16.08.2016 15:22:00 |
Dodiet man prestižu
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com