Jquery 如何在ViewBag中返回一个值以及JsonResult ajax调用中的其他值

Jquery 如何在ViewBag中返回一个值以及JsonResult ajax调用中的其他值,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,嗨,我做了两个下拉列表。第二个dropdownlist取决于第一个dropdownlist选择的选择。例如: 现在,在从Call Nature中选择值之后,调用票证下拉列表将由ajax调用填充 我的查询是我想在文本调用Ticket之后显示调用Ticket dropdownlist的计数值,就像调用Ticket(10)一样,其中10是调用Ticket dropdownlist的计数值 我的控制器类似于: public JsonResult GetTickets(string id)

嗨,我做了两个下拉列表。第二个dropdownlist取决于第一个dropdownlist选择的选择。例如:

现在,在从Call Nature中选择值之后,调用票证下拉列表将由ajax调用填充

我的查询是我想在文本调用Ticket之后显示调用Ticket dropdownlist的计数值,就像调用Ticket(10)一样,其中10是调用Ticket dropdownlist的计数值

我的控制器类似于:

    public JsonResult GetTickets(string id)
    {
        if (id == null)
        {
            id = "0";
        }

        int CallNatureID = Convert.ToInt32(id);

        var TicketsList = (from a in dataContext.CallTickets
                           join b in dataContext.Calls_HelpDesk
                           on a.CallTicketNumber equals b.TicketNumber
                           where a.CallNatureId == CallNatureID
                           && a.IsOpenFlag == true
                           && a.CallStatusId == 1
                           && a.TicketOwner == 1
                           && b.FollowupReasonId == 9
                      select new { a.CallTicketNumber }).ToList();

        int TicketCount = TicketsList.Count;
        ViewBag.HiddenTicketCount = string.Format("({0})", TicketCount);
        return Json(new SelectList(TicketsList, "CallTicketNumber", "CallTicketNumber"), ViewBag.HiddenTicketCount);
    }
ViewBag.HiddenTicketCount保存呼叫票证计数的值。但我不能把它和我的护照一起退

     return Json(new SelectList(TicketsList, "CallTicketNumber", "CallTicketNumber"), ViewBag.HiddenTicketCount);
    }

如何使用Json返回ViewBag.HiddenTicketCount/TicketCount值?

您需要像这样修改控制器

int TicketCount = TicketsList.Count;
return Json(new { TicketList = new SelectList(TicketsList, "CallTicketNumber", "CallTicketNumber"), Count = TicketCount });
在阿贾克斯

$.ajax({
   //....
   success: function(data) {
      var ticketList = data.TicketList;// bind dropdown using this list
      var count = data.Count;
      // I suppose `lblCallTicket` is your call ticket label id
      $('#lblCallTicket').text('Call Ticket (' + count + ')');

   }
})
如果您不想从控制器发送,那么只需在ajax中执行此操作

   success: function(data) {
      var ticketList = data.TicketList;// bind dropdown using this list
      var count = ticketList.Length;
      // I suppose `lblCallTicket` is your call ticket label id
      $('#lblCallTicket').text('Call Ticket (' + count + ')');

   }

您需要像这样修改控制器

int TicketCount = TicketsList.Count;
return Json(new { TicketList = new SelectList(TicketsList, "CallTicketNumber", "CallTicketNumber"), Count = TicketCount });
在阿贾克斯

$.ajax({
   //....
   success: function(data) {
      var ticketList = data.TicketList;// bind dropdown using this list
      var count = data.Count;
      // I suppose `lblCallTicket` is your call ticket label id
      $('#lblCallTicket').text('Call Ticket (' + count + ')');

   }
})
如果您不想从控制器发送,那么只需在ajax中执行此操作

   success: function(data) {
      var ticketList = data.TicketList;// bind dropdown using this list
      var count = ticketList.Length;
      // I suppose `lblCallTicket` is your call ticket label id
      $('#lblCallTicket').text('Call Ticket (' + count + ')');

   }

简单的解决方案是,将它存储在一个变量中并返回它。在我的最后一行return Json()中,如何传递该变量?首先,只返回一个匿名对象的集合,其中只包含值和文本(当您不需要时,将
SelectListItem
的附加属性发送到视图是没有意义的。您不能使用
ViewBag
-只需发送和附加对象-
返回Json(新的{options=TicketsList,count=TicketsList.count})
您可以提供ajax调用代码吗?或者,您可以使用javascript获取返回数组的长度。简单的解决方案是,将其存储在一个变量中并返回。在我返回的最后一行Json()中,我如何传递该变量?首先,只返回一个包含值和文本的匿名对象集合(当您不需要时,将
SelectListItem
的附加属性发送到视图是没有意义的。您不能使用
ViewBag
-只需发送和附加对象-
返回Json(新的{options=TicketsList,count=TicketsList.count});
您可以提供ajax调用代码吗?或者,您可以使用javascript获取返回的数组的长度。