Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NETMVC中从AJAX调用返回嵌套的PartialView(包括它们的javascript)_Asp.net_Asp.net Mvc_Partial Views_Renderpartial - Fatal编程技术网

如何在ASP.NETMVC中从AJAX调用返回嵌套的PartialView(包括它们的javascript)

如何在ASP.NETMVC中从AJAX调用返回嵌套的PartialView(包括它们的javascript),asp.net,asp.net-mvc,partial-views,renderpartial,Asp.net,Asp.net Mvc,Partial Views,Renderpartial,我使用嵌套的局部视图创建了类别树视图: 我的索引页(显示树视图): 值不能为空。 参数名称:viewContext Html='Html'引发了类型为'System.ArgumentNullException'的异常。 我想知道是否有一个聪明的人可以扩展RenderPartialOstring方法以包括嵌套的PartialView?还是我遗漏了一些简单的东西?您需要在加载新返回的HTML/JavaScript时将其挂回DOM。 我相信有很多方法可以做到这一点,但我发现了一个很好的jQuery附加

我使用嵌套的局部视图创建了类别树视图:

我的索引页(显示树视图):

值不能为空。 参数名称:viewContext
Html='Html'引发了类型为'System.ArgumentNullException'的异常。

我想知道是否有一个聪明的人可以扩展RenderPartialOstring方法以包括嵌套的PartialView?还是我遗漏了一些简单的东西?

您需要在加载新返回的HTML/JavaScript时将其挂回DOM。
我相信有很多方法可以做到这一点,但我发现了一个很好的jQuery附加组件,名为LiveQuery() 这有助于我做到这一点

为了在您的案例中发挥作用,您需要在父页面中设置一个jQuery document.ready函数,该函数如下所示:

$("#catsTree").livequery(function () { this.treeview(); }, function () { /* code to destroy the treeview here */ });

您能否从部分视图(进入主页)中删除javascript,然后在ajax调用的成功方法中调用$(“#catsTree”).treeview()?对否决票有什么解释吗?我很想听听你不喜欢这个答案的地方,这样我(和其他人)就能学会更好的方法。
<div>
 <ul id="catsTree"> 
  <% Html.RenderPartial("ItemCats_LI", Model); %>
 </ul>
</div>

<script type="text/javascript" >
$(document).ready(function() {        
    $("#catsTree").treeview();
</script>
<%foreach (ItemCategory itemCat in Model)
 { %>
  <li>
   <%= itemCat.Name %>
    <%if (itemCat.Children != null && itemCat.Children.Count() > 0)
      { %>
       <ul>
        <% Html.RenderPartial("ItemCats_LI", itemCat.Children); %>
       </ul>
    <%} %>
 </li>
<%} %>
<script type="text/javascript">
$("[name='selectCat_btn']").click(function() {       
    var CID = $(this).attr('value');      
    $.ajax({
        type: "POST",
        url: "SelectCat",
        dataType: "json",
        data: { "CID": CID },
        success: function(result) { $("#CatSelectorOutput").html(result.output); }
    });
    return false;
});
</script>
 [AcceptVerbs(HttpVerbs.Post)]
    [UrlRoute(Name = "SelectCat", Path = "selectCat")]
    public ActionResult SelectCat(int CID)
    {
        IQueryable<ItemCategory> cats;
        cats = ItemRepo.GetItemCats().WithCID(CID);

        JsonResult result = null;
        result = new JsonResult
        {
            Data = new
            {
                success = true,
                output =
                Helpers.RenderHelper
                .RenderPartialToString("~/Views/Admin/AdminItemCatsUL.ascx",
                cats)                    
            }
        };
        return result;
    }
<ul id="catsTree"> 
 <% Html.RenderPartial("ItemCats_LI", Model); %>
</ul>
$("#catsTree").livequery(function () { this.treeview(); }, function () { /* code to destroy the treeview here */ });