簡體   English   中英

如何向 C# 中的 ASP.NET Core MVC controller 發送數據?

[英]How to send data to the ASP.NET Core MVC controller in C#?

我正在嘗試將數據從我的 Javascript 發送到我的發布方法 controller。 我將淘汰賽作為我從 Javascript 綁定到我的視圖的方法。

這是我的 controller,這就是 convocationData 是 null

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

這就是我嘗試使用 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);
            }
        });

像這樣添加[FromBody]屬性

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

您可以在此處閱讀更多內容 使用 ASP.NET Web API 接受原始請求正文內容

更新:

另外,請閱讀 zgood 對您的帖子的評論。 而不是使用JSON.stringify您應該創建一個相應的 model 正如他在評論中所描述的那樣。

更新 2:

JS model class

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

C# DTO class

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

然后您可以將您的操作方法更新為此

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

和 ajax 發布到此:

$.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);
    }
});

我沒有測試代碼,但它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM