C# 使用ASP.NET WebAPI返回Ajax GET请求使用的布尔值

C# 使用ASP.NET WebAPI返回Ajax GET请求使用的布尔值,c#,jquery,asp.net,ajax,asp.net-web-api,C#,Jquery,Asp.net,Ajax,Asp.net Web Api,我已经构建了一个WebAPI(使用版本2),它返回HttpResponseMessage。我向这些WebAPI方法发出AJAX请求,WebAPI返回JSON响应。这一切都很好,但现在我需要的是一种方法,向一个只返回布尔值的WebAPI方法发出AJAXGET请求。下面是我用来获取JSON的GET请求的一个示例: $.ajax({ url: 'http://server/site/api/BulletinBoard/GetUserMessageHistory?userId=' + userI

我已经构建了一个WebAPI(使用版本2),它返回
HttpResponseMessage
。我向这些WebAPI方法发出
AJAX
请求,WebAPI返回
JSON
响应。这一切都很好,但现在我需要的是一种方法,向一个只返回布尔值的WebAPI方法发出
AJAX
GET请求。下面是我用来获取JSON的
GET
请求的一个示例:

$.ajax({
    url: 'http://server/site/api/BulletinBoard/GetUserMessageHistory?userId=' + userId + '&messageId=' + messageId,
    type: 'GET',
    dataType: 'json',
    crossDomain: true,
    success: function (data) {
          DoSomething();                    
    },
    error: function (x, y, z) {
          alert(x + '\n' + y + '\n' + z);
    }
});
我希望实现的是(这是伪代码):

其中
hasMessageBeenDisplayed
将是我的WebAPI方法返回的
true
false
。下面是我的WebAPI方法的一个示例:

[HttpGet]
public HttpResponseMessage GetUserMessageHistory(string userId, int messageId)
{
    var userMessageHistory = (from i in db.UserMessageHistories
                              where i.UserId == userId &&
                              i.MessageId == messageId
                              select new
                              {
                                  UserId = i.UserId,
                                  MessageId = i.MessageId,
                                  LastSeen = i.LastSeen,
                              }).ToList();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, userMessageHistory);
    return response;
}

为了能够发出一个期望
true
false
AJAX
请求,我还会从我的WebAPI方法返回
HttpResponseMessage
?我如何才能发出一个
AJAX
GET请求,它调用的方法可以返回
true
false

为什么不简单地更改为:

[HttpGet]
public bool GetUserMessageHistory(string userId, int messageId)
{
    var userMessageHistory = (from i in db.UserMessageHistories
                              where i.UserId == userId &&
                              i.MessageId == messageId
                              select new
                              {
                                  UserId = i.UserId,
                                  MessageId = i.MessageId,
                                  LastSeen = i.LastSeen,
                              }).ToList();


    return userMessageHistory.any();
}

怎么样
userMessageHistory
?这样行吗?我想到了这一点,但没有尝试,因为我向我的WebAPI方法发出了HTTP GET请求,调用方希望得到的是HttpResponse,而不是.NET布尔返回值。AJAX请求中定义的数据类型只能是json、xml和其他一些数据类型,但肯定不是布尔值。我的意思是,如果这是真的,那么我将如何构造AJAX调用?显然,这不再是JSON响应了,对吧?@FelipeOriani这只是想弄明白,不要担心内容。@Mike Marks我想你误解了WebAPI的工作原理。WebAPI非常聪明,因为在控制器中有一个返回HTTP响应的方法。因此,即使在返回int、string和bool等基本类型时,它也会以XML或JSON的形式发送,具体取决于您配置它的目的。就是这么简单。
$.ajax()
返回
XMLHttpRequest
,如果webapi返回200状态码,它将执行调用的
成功
事件。由于您在ajax调用中设置了
json
,因此将请求发送到内容类型为
application/json
的webapi,您将获得此格式的输出。
[HttpGet]
public bool GetUserMessageHistory(string userId, int messageId)
{
    var userMessageHistory = (from i in db.UserMessageHistories
                              where i.UserId == userId &&
                              i.MessageId == messageId
                              select new
                              {
                                  UserId = i.UserId,
                                  MessageId = i.MessageId,
                                  LastSeen = i.LastSeen,
                              }).ToList();


    return userMessageHistory.any();
}