Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 27609|Válasz: 3

[WebAPI] WebAPI nem tud több paramétert (SB és SB1) kötni a kérés tartalmához

[Linket másol]
Közzétéve 2016. 08. 16. 13:52:38 | | | |



A WebAPI-ban a kéréstest (HttpContent) csak egyszer olvasható, nem gyorsalogázható, és csak előre lehet olvasni.

Például:

1. Kérés címe: /?id=123&name=bob

    Szerveroldali metódus: void Action(int id, string name) // Minden paraméter egyszerű típus, tehát mind az URL-ből származik

2. Kérési cím: /?id=123&name=bob

    Szerveroldali metódus: void Action([FromUri] int id, [FromUri] string name) // Ugyanaz, mint fent

                      void Action([FromBody] string name); A [FormBody] attribútum azt mutatja, hogy az egész test egy stringként érvelve olvasható

3. Kérés címe: /?id=123

    Osztálymeghatározás:

public class Customer { // Egy komplex objektumtípus definiált
  public string Name { get; Szett; }
  public int Age { get; Szett; }
}

    Szerveroldali módszer: void Action(int id, Customer c) // Paraméterazonosító a lekérdezési stringből olvasható, a c paraméter egy összetett ügyfélobjektum osztály, amelyet a testből a formátoron keresztül olvasnak

    Szerveroldali módszer: void action (Ügyfél c1, Ügyfél c2) // Hiba! Több paraméter összetett típus, és mindegyik megpróbál egy testből olvasni, amelyet csak egyszer lehet olvasni

    Szerveroldali módszer: void action([FromUri] Customer c1, Customer c2) // Yes! Ellentétben a fenti művelettel, a komplex C1 típust az URL-ről, a C2-t pedig a testből olvassák el

4. ModelBinder módszer:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Jelzi, hogy egy adott modell bindert használnak a paraméter feloldásához

[ModelBinder(MyCustomBinder)] public class SomeType { } // Ezt a szabályt minden SomeType típusparaméterre alkalmazzuk úgy, hogy a [ModelBidner(MyCustomBinder)] attribútumot egy adott típusú SomeType névre jelöljük

void Akció(SomeType c) // Mivel c típusa SomeType, a SomeType jellemzőit alkalmazzák a modellkötés meghatározására



Összefoglalás:

1. Az alapértelmezett egyszerű paramétereket URL paramétereken keresztül továbbítják, kivételekkel:

1.1 Ha az útvonal tartalmazza az id paramétert, az id paramétert áthaladják az útvonalon;

1.2 Ha a paraméter [FromBody] jelöléssel van jelölve, a paraméter lehet egyszerű paraméter, és az ügyfél továbbíthatja a POST-on keresztül: $.ajax(url, '=value'), vagy $.ajax({url: url, data: {'': 'value'}});

2. Az alapértelmezett összetett paramétereket (egyedi entitásosztályokat) POST-on keresztül továbbítják, kivételekkel:

2.1 Ha a paraméter értéke [FromUri] néven van jelölve, akkor a paraméter lehet komplex paraméter;

3. Egy [FromBody] jelölésű paraméter csak egyszer jelenthet meg, egy [FromUri] jelölésű paraméter többször is megjelenhet, és ha a [FromUri] paraméter egyszerű paraméter, akkor a címke eltávolítható.




Előző:.NET Oracle többtáblás lekérdezési módszer, egy buta módszer.
Következő:C# a visszaverődést használja annak meghatározására, hogy egy tulajdonság van-e hozzárendelve
Közzétéve 2016. 08. 16. 15:21:29 |
A ModelBindernek kell lennie egy feature class-nak a ModelBinderAttribute számára

Hasonló a szűrőkhöz
Közzétéve 2016. 08. 16. 15:21:44 |
Gyere meg minden nap
Közzétéve 2016. 08. 16. 15:22:00 |
Adj nekem egy kis presztízst
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com