Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 27609|Vastaus: 3

[WebAPI] WebAPI ei voi sitoa useita parametreja (SB ja SB1) pyynnön sisältöön

[Kopioi linkki]
Julkaistu 16.8.2016 13.52.38 | | | |



WebAPI:ssa pyyntörunkoa (HttpContent) voi lukea vain kerran, ei välimuistissa, ja sitä voi lukea vain eteenpäin.

Esimerkiksi:

1. Pyyntöosoite: /?id=123&name=bob

    Palvelinpuolen metodi: void Action(int id, string name) // Kaikki parametrit ovat yksinkertaisia tyyppejä, joten ne kaikki tulevat url:sta

2. Pyyntöosoite: /?id=123&name=bob

    Palvelinpuolen metodi: void Action([FromUri] int id, [FromUri] merkkijonon nimi) // Sama kuin edellä

                      void Action([FromBody] merkkijonon nimi); [FormBody]-attribuutti näyttää, että koko keho luetaan merkkijonona argumenttina

3. Pyyntöosoite: /?id=123

    Luokan määritelmä:

public class Customer { // Määritelty monimutkainen oliotyyppi
  julkinen merkkijono Nimi { get; setti; }
  public int Age { get; setti; }
}

    Palvelinpuolen metodi: void Action(int id, Customer c) // Parametrin id luetaan kyselymerkkijonosta, parametri c on monimutkainen asiakasobjektiluokka, luetaan rungosta muotoilun kautta

    Palvelinpuolen menetelmä: void action (Asiakas c1, Asiakas c2) // Virhe! Useat parametrit ovat monimutkaisia tyyppejä ja kaikki yrittävät lukea kappaleesta, jota voidaan lukea vain kerran

    Palvelinpuolen metodi: void action([FromUri] Asiakas c1, Asiakas c2) // Kyllä! Toisin kuin yllä mainitussa toiminnossa, kompleksityyppi C1 luetaan URL-osoitteesta ja C2 rungosta

4. ModelBinder-menetelmä:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Tarkoittaa, että tiettyä mallisidontaa käytetään parametrin ratkaisemiseen

[ModelBinder(MyCustomBinder)] julkinen luokka SomeType { } // Sovella tätä sääntöä kaikkiin SomeType-tyyppiparametreihin määrittämällä [ModelBidner(MyCustomBinder)] attribuutti tietylle tyypille SomeType

void Action (SomeType c) // Koska c:n tyyppi on SomeType, SomeTypen ominaisuuksia sovelletaan sen mallisidonnan määrittämiseen



Yhteenveto:

1. Oletusparametrit kulkevat URL-parametrien kautta, poikkeuksin:

1.1 Jos reitti sisältää id-parametrin, id-parametri kulkee reitin läpi;

1.2 Jos parametri on merkitty [FromBody], parametri voi olla yksinkertainen parametri, ja asiakas voi välittää sen POST-muodossa: $.ajax(url, '=value'), tai $.ajax({url: url, data: {'': 'value'}});

2. Oletusmonimutkaiset parametrit (mukautetut entiteettiluokat) välitetään POSTin kautta, poikkeuksin:

2.1 Jos parametrin arvo on merkitty [FromUri], parametri voi olla kompleksiparametri;

3. Parametri, joka on merkitty [FromBody], saa esiintyä vain kerran, parametri, joka on merkitty [FromUri], voi esiintyä useita kertoja, ja jos [FromUri] -parametri on yksinkertainen parametri, tunniste voidaan poistaa.




Edellinen:.NET Oracle -monitaulukyselymenetelmä, typerä menetelmä.
Seuraava:C# käyttää heijastusta määrittääkseen, onko ominaisuus annettu
Julkaistu 16.8.2016 15.21.29 |
ModelBinderilla tulisi olla ominaisuusluokka ModelBinderAttributelle

Samankaltainen kuin suodattimet
Julkaistu 16.8.2016 15.21.44 |
Tule käymään joka päivä
Julkaistu 16.8.2016 15.22.00 |
Anna minulle vähän arvovaltaa
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com