【问题标题】:jquery ajax load partial view to div tag MVCjquery ajax 加载部分视图到 div 标签 MVC
【发布时间】:2013-12-02 20:57:03
【问题描述】:

我一直在寻找如何通过 jquery 调用在我的索引视图的 div 标记中加载部分视图,但没有运气。当我单击树上的链接时,我如何没有更新部分视图。部分视图在我第一次运行时加载 b/c 我调用 <div id="divid"> @Html.Partial("_InnerView")</div>。之后,当我单击链接时没有任何反应。或者,也许我在这里没有得到完整的画面。有些人提到使用$('#divid').load = data;$('#divid').innerHTML= data;,但对我没有任何作用。这就是我所拥有的。

控制器:

 public ActionResult Test(string parentEls)
    {
        if (Request.IsAjaxRequest())
        {
            Employee employee = new Employee();
            employee.Name = parentEls + "1";
            return PartialView("_InnerView", employee);
        }
        return View("_InnerView");            
    }

索引视图:

<div id="divid">
@Html.Partial("_InnerView")</div>


$('#tree a').click(function () {
    var parentEls = $(this).parents('ul').map(function () {
        return $(this).find('a').first().text();
    }).get().join(", ");

    $.ajax({
        type: 'POST',
        url: '@Url.Content("~/Home/Test")',
        data: {
            parentEls: parentEls                
        },
        success: function(data) {
            $('#divid').innerHTML = data;
        }
    });
});

_InnerView.cshtml:

  @model TreeDemo.Models.Employee
EmpName:@Model.Name

更新:我得到了这个和这个一起工作

 $.ajax({ url: '/Home/Test/', contentType: 'application/html; charset=utf-8', type: 'GET', dataType: 'html', data: { parentEls: parentEls } }) 

【问题讨论】:

    标签: asp.net-mvc jquery


    【解决方案1】:

    你必须使用

    $('#divid').html(data);
    

    而不是

    $('#divid').innerHTML = data;
    

    【讨论】:

      【解决方案2】:

      在 div MVC 4 中加载部分视图

      最近我想在 Div 中加载 Partal View,经过大量的研发,这对我有用

       $.ajax({
          type: 'POST',
          url: '@Url.Content("~/ControllerName/ActionName")',
          data: {
              title: title
          },
          success: function(result) {
              $('#divid').innerHTML = result;
          }
      });
      
          And In Partal View Action Controller Code
      
          public PartialViewResult ShowCategoryForm(string title)
          {
              Model model = new Model();
              model.Title = title;
              return PartialView("~/Views/ControllerName/PartalView.cshtml", model);
          }
      

      【讨论】:

        【解决方案3】:

        我认为如果您检查呼叫的请求/响应对象会很有用,这样您就可以在拨打电话后看到实际发生的情况...根据您的代码,我可以注意到您正在发布使用

         $.ajax({
                type: 'POST',
                url: '@Url.Content("~/Home/Test")',
                data: {
                    parentEls: parentEls                
                },
                success: function(data) {
                    $('#divid').innerHTML = data;
                }
            });
        

        但是你的动作被标记为“得到”......你需要有这样的东西

        [HttpPost]
        public ActionResult Test(string parentEls)
        

        所以 MVC 可以理解在使用 HttpPost 动词时应该调用该动作

        【讨论】:

        • 处于调试模式。当我单击链接时,它确实命中了我的操作测试方法。它只是不会在 div 标签中呈现 _InnverView。新手问题。如何检查调用的请求/响应对象?
        • 如果您使用 Chrome,在开发者工具的 Nework 选项卡上,您可以看到选项卡详细信息。如果你使用 Firefox,你可以在 Firebug 中做同样的事情......我认为在 IE 中检查它也是可能的,但不确定如何
        • 好的。我这样做了,当我单击链接时,我在 Firefox>Network 中看到 Method=POST。当双击它时,它显示状态代码:200 OK。在响应选项卡中。我看到我点击的数据:
          T:  Texas,  USA
        • 有什么想法吗?也许当我点击一个链接时它没有刷新?我在部分视图 (_InnerView) 中看到 div 标记,其中填充了我在 Firebug 中单击的数据,但它没有显示出来。这就是我看到的
          T:  Dallas ,  美国
        • 尝试清除 div 的内容,然后添加结果...我想我前段时间遇到了类似的问题,这就是我解决它的方法
        猜你喜欢
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多