使用ASP.NET WebAPI返回由Ajax GET请求使用的Boolean

Mik*_*rks 5 c# asp.net ajax jquery asp.net-web-api

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

$.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);
    }
});
Run Code Online (Sandbox Code Playgroud)

我希望完成的是(这是伪代码):

    var hasMessageBeenDisplayed = 
        $.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);
              }
       });
Run Code Online (Sandbox Code Playgroud)

我的WebAPI方法hasMessageBeenDisplayed将在何处返回truefalse返回.这是我的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;
}
Run Code Online (Sandbox Code Playgroud)

为了能够AJAX提出期望的请求,true还是false我仍然会HttpResponseMessage从我的WebAPI方法返回?如何发出一个AJAXGET请求,其调用的方法可以返回truefalse

fel*_*ekm 3

为什么不简单地更改为:

[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();
}
Run Code Online (Sandbox Code Playgroud)

  • @Mike Marks 我认为你误解了 WebAPI 的工作原理。WebAPI 足够聪明,知道由于控制器中有一个方法,因此您将返回 HTTP 响应。因此,即使您返回 int、string 和 bool 等基本类型,它也会以 XML 或 JSON 形式发送出去,具体取决于您的配置。就是这么简单。 (2认同)