【问题标题】:mvc ajax refresh div method controller jsonmvc ajax刷新div方法控制器json
【发布时间】:2014-11-05 06:05:05
【问题描述】:

我在控制器中有一个方法,它返回一个带有 Json 的 ViewBag。

 public JsonResult FilterCheck(int id, int[] mycheck, string idprot)
    {
    ViewBag.Utenti = this.GetDbContext().utente.Include(s => s.cod_servizio_utente).Where(x => x.cod_servizio_utente.Select(l => l.id).Contains(5)).ToList();

return Json(ViewBag.Utenti, JsonRequestBehavior.AllowGet);

    }

在视图中我有这个脚本函数 ajax,如果这个函数“成功”,我会刷新一个 div,其中包含 viebag.Utenti 上的 foreach:

 $.ajax({ 
                type: "POST",
                url: "@Url.Action("FilterCheck","Operatore")",
                datatype: "json",
                traditional: true,
                data: { 'mycheck': mycheck, 'idprot': idprot, 'id': '@Model.id' },
                success: function(data) {
                    var html = $(data).filter('#external-events').html();
                    $('#external-events').html(data);
                }
            });

<div id='external-events'>

              @foreach (HAnnoZero.Repositories.utente item in ViewBag.Utenti)
        {
            <div class='col-lg-3'><div class='external-event'>@item.id- @item.cognome @item.nome</div></div>    
        }    </div>

但不工作。如何刷新foreach里面的div id“外部事件”?谁能帮帮我?

【问题讨论】:

  • 显示 json 响应和问题不清楚你想做什么
  • 您好 Ehsan,我正在尝试刷新 div id=external events 内 viewBag.Utenti 中的 @foreach 项目

标签: c# ajax asp.net-mvc json asp.net-mvc-4


【解决方案1】:

首先你不需要将集合分配给 ViewBag

public ActionResult FilterCheck(int id, int[] mycheck, string idprot)
{
  var data = this.GetDbContext().utente.Include(......
  // Build anonymous object collection to avoid circular reference errors
  var response = data.Select(d => new
  {
    id = d.id,
    cognome = d.cognome
    // other properties as required
  });
  return Json(response);
}

其次,您返回的是 JSON,而不是 html,因此在您的成功函数中,您需要遍历属性并构建您的 html(不确定您的属性是什么,因此根据需要进行调整)

success: function(data) {
  $('#external-events').empty(); // clear existing items
  $.each(data, function(index, item) {
    var div = $('<div><div>'); // Create new element
    div.text(item.id + ' ' + item.cognome); // Set inner text
    $('#external-events').append(div); // add the new element
  });
}

另一种方法是让 action 方法返回一个包含 html 的局部视图,然后使用

success: function(data) {
  $('#external-events').html(data);
}

【讨论】:

  • 谢谢斯蒂芬...但是控制台说 ERROR 500 internal server error 不起作用
  • 在你的控制器上放一个断点,看看错误在哪里。
  • 奇怪的是,在控制器中我没有一些错误。 var数据工作正常..但在成功(ajax)中不要输入
  • 在成功函数的第一行添加console.log(data);以检查返回的内容。
  • 我已将 console.log(data) 放在错误的第一行,因为成功时不要输入。控制台返回:在序列化“HAnnoZero.Repositories.utente”类型的对象时检测到循环引用
猜你喜欢
  • 2011-05-06
  • 2021-06-29
  • 2019-03-30
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2012-07-06
相关资源
最近更新 更多