Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 27609|Atsakyti: 3

[WebAPI] WebAPI negali susieti kelių parametrų (SB ir SB1) su užklausos turiniu

[Kopijuoti nuorodą]
Paskelbta 2016-08-16 13:52:38 | | | |



WebAPI užklausos turinį (HttpContent) galima perskaityti tik vieną kartą, nesaugoti talpykloje ir skaityti tik į priekį.

Pavyzdžiui:

1. Užklausos adresas: /?id=123&name=bob

    Serverio metodas: void Action(int id, eilutės pavadinimas) // Visi parametrai yra paprasti tipai, todėl jie visi bus iš URL

2. Užklausos adresas: /?id=123&name=bob

    Serverio metodas: void Action([FromUri] int id, [FromUri] eilutės pavadinimas) // Tas pats, kaip aukščiau

                      void Action([FromBody] eilutės pavadinimas); Atributas [FormBody] rodo, kad visas tekstas skaitomas kaip eilutė kaip argumentas

3. Užklausos adresas: /?id=123

    Klasės apibrėžimas:

viešoji klasė Klientas { // Apibrėžtas sudėtingas objekto tipas
  viešoji eilutė Pavadinimas { get; rinkinys; }
  viešas int Amžius { gauti; rinkinys; }
}

    Serverio metodas: void Action(int id, Customer c) // Parametro ID skaitomas iš užklausos eilutės, parametras c yra sudėtinga kliento objektų klasė, skaitoma iš teksto per formatuotoją

    Serverio pusės metodas: anuliuoti veiksmą (klientas c1, klientas c2) // Klaida! Keli parametrai yra sudėtingi tipai ir visi bando nuskaityti iš kūno, kurį galima perskaityti tik vieną kartą

    Serverio metodas: void action([FromUri] Customer c1, Customer c2) // Taip! Skirtingai nuo aukščiau pateikto veiksmo, sudėtingas C1 tipas bus nuskaitytas iš URL, o C2 – iš pagrindinio teksto

4. ModelBinder metodas:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Nurodo, kad parametrui išspręsti naudojamas konkretus modelio segtuvas

[ModelBinder(MyCustomBinder)] viešoji klasė SomeType { } // Taikykite šią taisyklę visiems SomeType tipo parametrams, deklaruodami [ModelBidner(MyCustomBinder)] atributą konkrečiam tipui SomeType

void Action(SomeType c) // Kadangi c tipas yra SomeType, SomeType charakteristikos taikomos jo modelio susiejimui nustatyti



Suvestinė:

1. Numatytieji paprasti parametrai perduodami per URL parametrus, išskyrus šias išimtis:

1.1 Jei maršrute yra id parametras, id parametras perduodamas per maršrutą;

1.2 Jei parametras pažymėtas kaip [FromBody], parametras gali būti paprastas parametras, ir klientas gali jį perduoti per POST: $.ajax(url, '=value') arba $.ajax({url: url, data: {'': 'value'}});

2. Numatytieji sudėtingi parametrai (pasirinktinės objektų klasės) perduodami per POST, išskyrus išimtis:

2.1 Jei parametro reikšmė pažymėta kaip [FromUri], parametras gali būti sudėtingas parametras;

3. Parametras, pažymėtas [FromBody], gali būti rodomas tik vieną kartą, parametras, pažymėtas kaip [FromUri], gali būti rodomas kelis kartus, o jei parametras, pažymėtas kaip [FromUri], yra paprastas parametras, žymą galima pašalinti.




Ankstesnis:.NET Oracle kelių lentelių užklausos metodas, kvailas metodas.
Kitą:C# naudoja atspindį, kad nustatytų, ar ypatybė priskirta
Paskelbta 2016-08-16 15:21:29 |
ModelBinder turi turėti ModelBinderAttribute funkcijų klasę

Panašus į filtrus
Paskelbta 2016-08-16 15:21:44 |
Ateikite ir aplankykite kiekvieną dieną
Paskelbta 2016-08-16 15:22:00 |
Suteik man šiek tiek prestižo
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com