Saya mencoba mengirim data dari Javascript saya ke pengontrol metode posting saya. Saya memiliki knockout sebagai metode saya untuk mengikat dari Javascript ke tampilan saya.

Ini adalah pengontrol saya, dan di sinilah convocationData adalah nol

public async Task<ActionResult> CreateConvocation(string convocationData)
{
    string baseUrl = "http://localhost:8080";
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(baseUrl);

Inilah cara saya mencoba memanggil metode menggunakan jQuery:

var tmpSession = self.addSession();
var tmpDescription = self.addDesc();
var convocationData = {
            sessionCode: tmpSession,
            description: tmpDescription
        };

$.ajax({
            url: '/Convocations/CreateConvocation',
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(convocationData),
            contentType: 'application/json',
            success: function (data) {
                self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
                self.addDesc("");
                self.addSession("");
            },
            error: function (err) {
                alert(err.status + " : " + err.statusText);
            }
        });
0
Jseb 30 Juni 2020, 23:03

1 menjawab

Jawaban Terbaik

Tambahkan atribut [FromBody] seperti ini

[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]string convocationData)
{
    return text;
}

Anda dapat membaca lebih lanjut di sini Menerima Konten Isi Permintaan Mentah dengan ASP.NET Web API

Memperbarui:

Juga, baca komentar zgood untuk posting Anda. Alih-alih menggunakan JSON.stringify Anda harus membuat model yang sesuai seperti yang dia jelaskan dalam komentarnya.

Pembaruan 2:

Kelas model JS

class Convocation {
  constructor(sessionCode, description) {
    this.sessionCode = sessionCode;
    this.description = description;
  }
}

Kelas C# DTO

public class Convocation
{
    public string SessionCode{ get; set; }
    public string Description { get; set; }
}

Kemudian Anda dapat memperbarui metode tindakan Anda ke ini

[HttpPost]
public async Task<ActionResult> CreateConvocation([FromBody]Convocation convocation)
{
    return text;
}

Dan posting ajax ke ini:

$.ajax({
    url: '/Convocations/CreateConvocation',
    type: 'POST',
    dataType: 'json',
    data: new Convocation(tmpSession, tmpDescription),
    contentType: 'application/json',
    success: function(data) {
        self.Convocations.push(new Convocation(self.addSession(), self.addDesc()));
        self.addDesc("");
        self.addSession("");
    },
    error: function(err) {
        alert(err.status + " : " + err.statusText);
    }
});

Saya tidak menguji kodenya tetapi seharusnya berhasil.

2
Michalides 30 Juni 2020, 21:58