Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 27609|Jawab: 3

[WebAPI] WebAPI tidak dapat mengikat beberapa parameter (SB dan SB1) ke konten permintaan

[Salin tautan]
Diposting pada 16/08/2016 13.52.38 | | | |



Di WebAPI, isi permintaan (HttpContent) hanya dapat dibaca sekali, tidak di-cache, dan hanya dapat dibaca ke depan.

Sebagai contoh:

1. Alamat permintaan: /?id=123&name=bob

    Metode sisi server: void Action(int id, nama string) // Semua parameter adalah jenis sederhana, jadi semuanya akan berasal dari url

2. Alamat permintaan: /?id=123&name=bob

    Metode sisi server: void Action([FromUri] int id, [FromUri] nama string) // Sama seperti di atas

                      void Action([FromBody] nama string); Atribut [FormBody] menampilkan bahwa seluruh isi dibaca sebagai string sebagai argumen

3. Alamat permintaan: /?id=123

    Definisi Kelas:

kelas publik Pelanggan { // Jenis objek kompleks yang ditentukan
  string publik Nama { get; menetapkan; }
  publik int Usia { dapatkan; menetapkan; }
}

    Metode sisi server: void Action(int id, Customer c) // Parameter id dibaca dari string kueri, parameter c adalah kelas objek Customer yang kompleks, dibaca dari body melalui pemformat

    Metode sisi server: tindakan batal (Pelanggan c1, Pelanggan c2) // Kesalahan! Beberapa parameter adalah jenis yang kompleks dan semuanya mencoba membaca dari tubuh, yang hanya dapat dibaca sekali

    Metode sisi server: tindakan batal([FromUri] Pelanggan c1, Pelanggan c2) // Ya! Berbeda dengan tindakan di atas, tipe kompleks C1 akan dibaca dari URL dan C2 akan dibaca dari isi

4. Metode ModelBinder:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Menunjukkan bahwa pengikat model tertentu digunakan untuk menyelesaikan parameter

[ModelBinder(MyCustomBinder)] kelas publik SomeType { } // Terapkan aturan ini ke semua parameter jenis SomeType dengan mendeklarasikan atribut [ModelBidner(MyCustomBinder)] ke jenis tertentu SomeType

void Action(SomeType c) // Karena jenis c adalah SomeType, karakteristik pada SomeType diterapkan untuk menentukan pengikatan modelnya



Ringkasan:

1. Parameter sederhana default diteruskan melalui parameter URL, dengan pengecualian:

1.1 Jika rute berisi parameter id, parameter id dilewatkan melalui rute;

1.2 Jika parameter ditandai sebagai [FromBody], parameter dapat berupa parameter sederhana, dan klien dapat meneruskannya melalui POST: $.ajax(url, '=value'), atau $.ajax({url: url, data: {'': 'value'}});

2. Parameter kompleks default (kelas entitas kustom) diteruskan melalui POST, dengan pengecualian:

2.1 Jika nilai parameter ditandai sebagai [FromUri], parameter dapat berupa parameter yang kompleks;

3. Parameter bertanda [FromBody] hanya diizinkan untuk muncul sekali, parameter yang ditandai sebagai [FromUri] dapat muncul beberapa kali, dan jika parameter yang ditandai sebagai [FromUri] adalah parameter sederhana, tag dapat dihapus.




Mantan:Metode kueri multi-tabel .NET Oracle, metode bodoh.
Depan:C# menggunakan refleksi untuk menentukan apakah properti ditetapkan
Diposting pada 16/08/2016 15.21.29 |
ModelBinder harus memiliki kelas fitur untuk ModelBinderAttribute

Mirip dengan filter
Diposting pada 16/08/2016 15.21.44 |
Datang dan kunjungi setiap hari
Diposting pada 16/08/2016 15.22.00 |
Beri aku prestise
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com