我使用.net core。有这样的类(class):
public class SentEmailItem
{
public SentEmailItem()
{
Attachments = new List<AttachmentItem>();
}
public long PKID { get; set; }
public string EmailTo { get; set; }
public string EmailFrom { get; set; }
public string Cc { get; set; }
public string Bcc { get; set; }
public string Body { get; set; }
public string Subject { get; set; }
public List<string> EmailToList => EmailTo.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
public List<string> CcList => (Cc ?? string.Empty).Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
public List<string> BccList => (Bcc ?? string.Empty).Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
public List<AttachmentItem> Attachments { get; set; }
}
Controller 中的这个方法:
[HttpPost]
public JsonResult SendEmail(SentEmailItem item)
{
EmailHelper.SendEmailAsync(item);
return SuccessJsonResult();
}
但是当通过以下代码从ajax调用此方法时:
$.ajax({
type: "POST",
url: self.sendEmailUrl,
contentType: "application/json",
dataType: "json",
data: JSON.stringify({ item: emaiItem })
}).done(function (json) {
App.unblockUI();
if (json.HasErrors) {
var errorsHtml = $.map(json.Errors, function (x) { return "" + x.ErrorMessage + "<br/>"; }).join("");
UIToastr.ShowMessage('error', 'Error', errorsHtml);
return;
}
self.sendEmailCompleted(json);
});
我无法在 Controller 方法中获取数据。所有数据都有空值。但是在emaiItem中放置的js值看起来像:
Bcc : "Testmail@mail.com"
Body : "test body"
Cc : "Testmail@mail.com"
EmailFrom : "just3f@mail.com"
EmailTo : "Testmail@mail.com"
Subject : "Test subject"
最佳答案
看起来 emaiItem
已经是这样的对象 -
var emaiItem = {Bcc : "Testmail@mail.com",
Body : "test body",
Cc : "Testmail@mail.com",
EmailFrom : "just3f@mail.com",
EmailTo : "Testmail@mail.com",
Subject : "Test subject"};
如果是这样,它可以只使用JSON.stringify(emaiItem)
。否则,您可以对上述 emaiItem
进行硬编码,并查看在服务器端填充的这些值。
$.ajax({
...
data: JSON.stringify(emaiItem)
}).done(function (json) {
...
});
解决方案
替换为 JSON.stringify(emaiItem)
,并使用 [FromBody]
属性强制模型绑定(bind)器绑定(bind)请求正文中的数据。
[HttpPost]
public JsonResult SendEmail([FromBody]SentEmailItem item)
{
}
关于javascript - 无法通过ajax查询获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787673/