无法通过ajax查询获取值

时间:2017-06-27 18:44:57

标签: javascript asp.net .net ajax asp.net-core

我使用.net核心。有这个课程:

   this.reportList = element.all(by.repeater("report in reportList"));
   this.ReportStatus = this.reportList.all(by.css('div.display-inherit'));

控制器中的这个方法:

   browser.wait(EC.textToBePresentInElementValue(PropertyPage.ReportStatus , 'Successful'));

但是当用这段代码从ajax调用这个方法时:

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; }
}

我无法在控制器方法中获取数据。所有数据都具有空值。但是在emaiItem中放置js值看起来像:

[HttpPost]
public JsonResult SendEmail(SentEmailItem item)
{
    EmailHelper.SendEmailAsync(item);

    return SuccessJsonResult();
}

2 个答案:

答案 0 :(得分:1)

似乎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]属性强制模型绑定器绑定请求正文中的数据。

[HttpPost] 
public JsonResult SendEmail([FromBody]SentEmailItem item) 
{
}

答案 1 :(得分:0)

您是否尝试过调试c#代码以查看后端api是否被命中?如果没有,这将是一个很好的起点。