我有一個前端向 ASP.NET Core 中的 Web api 呼叫 axios 請求,由于某種原因,我的模型不會系結。我正在向 web api 發送電子郵件資料并嘗試將其系結到電子郵件和聯系人模型。它只是一直將電子郵件物件顯示為空。我的 axios 請求似乎作業正常,因為它確實發送了有效負載,但由于電子郵件物件為空,API 中出現錯誤。
JS
axios({
method: 'post',
url: window.location.origin '/MainReview/SendEmail',
data: {
From: this.emailFrom,
To: this.emailToModel,
Cc: this.emailCcModel,
Bcc: this.emailBccModel,
Subject: this.emailSubject,
Body: this.emailBody,
},
headers: {
'Content-Type': 'multipart/form-data',
"RequestVerificationToken": document.forms[0].querySelector('input[name="__RequestVerificationToken"]').value,
}
}).then(response => {
}).catch(error => {
console.log(error.response.data.error);
});
網路 API
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SendEmail([FromBody] Email email)
{
System.Diagnostics.Debug.WriteLine(email.From);
return Ok(new { Result = email.From });
}
模型:
public class Email
{
public string? From { get; set; }
public IEnumerable<Contact>? To { get; set; }
public IEnumerable<Contact>? Cc { get; set; }
public IEnumerable<Contact>? Bcc { get; set; }
public string? Subject { get; set; }
public string? Body { get; set; }
}
public class Contact
{
public string EmailAddress { get; set; }
}
有效載荷中發送的 Json 資料:
{ "From":"[email protected]", "To":[ { "EMAIL_ADDRESS":"[email protected]" }, { "EMAIL_ADDRESS":"[email protected]" } ], "Cc":[ { "EMAIL_ADDRESS":"[email protected]" } ], "Bcc":[ ], "Subject":"Temporary Placeholder", "Body":"tessdf" }
我相信我的問題與 IEnumerable 有關。老實說,我一直遠離模型,但我想我會開始嘗試更多地使用它們,因為它是最佳實踐。然而,這讓我發瘋了,因為我不明白為什么這不起作用。
uj5u.com熱心網友回復:
1.您在后端使用[FromBody]并在前端發布json資料,Content-Type應該是application/json.
headers: {
'Content-Type': 'application/json', //change here....
"RequestVerificationToken": document.forms[0].querySelector('input[name="__RequestVerificationToken"]').value,
}
2.發布的json資料不正確,因為Contactmodel中的屬性是named EmailAddress,但是你發布的json是name EMAIL_ADDRESS。
data: { "From":"[email protected]", "To":[ { "EmailAddress":"[email protected]" }, { "EmailAddress":"[email protected]" } ], "Cc":[ { "EmailAddress":"[email protected]" } ], "Bcc":[ ], "Subject":"Temporary Placeholder", "Body":"tessdf" },
uj5u.com熱心網友回復:
確保結構與方法引數類匹配。在這里,我們有一個電子郵件引數,它是一個物件 {}。它還具有作為物件串列 [{}] 的屬性。
data: {
From: this.emailFrom,
To: [{ EmailAddress: this.emailToModel }],
Cc: [{ EmailAddress: this.emailCcModel }],
Bcc: [{ EmailAddress: this.emailBccModel }],
Subject: this.emailSubject,
Body: this.emailBody,
}
注意:如果您要傳遞多個引數,您還需要指定引數名稱,以及一組額外的 {}。
data: {
email: {
From: this.emailFrom,
To: [{ EmailAddress: this.emailToModel }],
Cc: [{ EmailAddress: this.emailCcModel }],
Bcc: [{ EmailAddress: this.emailBccModel }],
Subject: this.emailSubject,
Body: this.emailBody,
},
parameter2:"XXXXXXXXX"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483903.html
標籤:asp.net 核心 asp.net-core-mvc asp.net-core-webapi
上一篇:Blazor,這是單例濫用嗎?(共享iframe值)
下一篇:格式化JSON結果
