使用DisplayFor Recursion重新加载部分视图

时间:2015-01-08 14:33:04

标签: ajax asp.net-mvc recursion partial-views

我有一个局部视图,可以加载模板并且工作正常。但是当我使用AJAX刷新它时,它会错误地渲染局部视图。

我的主要观点包括:

<div id="OrgTreeViewDiv">
    @Html.Partial("_OrganisationTreeView", Model)
</div>

我的部分观点:

<div id="StructureTree" class="k-header">
  <ul id="treeview">

    @foreach (var level in Model)
    {
        if (level.OrgLevel == 0)
        {
            foreach (var org in level.OrganisationsList)
            {
                @Html.DisplayFor(x => org);
            }

        }   
    }
  </ul>
</div>

<script type="text/javascript">
$(document).ready(function () {
    $("#treeview").kendoTreeView();
});
</script> 

显示模板:

@model OrganisationViewModel
<li data-expanded="true">
    <span class="LevelSelector" LevelName="@Model.LevelName" OrgGuid="@Model.OrganisationGuid" Abbreviation="@Model.Abbreviation" Orglevel="@Model.OrganisationLevel">
        @Html.DisplayFor(x => x.OrganisationName)
    </span>
    <a href="#" class="DeleteOrg">Del</a>
    @if (Model.HasChildren)
    {
        @:<ul>  
            foreach (var child in Model.ChildOrganisations)
            {
                @Html.DisplayFor(x => child)
            }
        @:</ul>
    }

</li>

我正在使用以下客户端电话

$('#OrgTreeViewDiv').load('@Url.Action("InsertOrganisationAbove","OrganisationAJAX")' + '?OrgGuid=' + OrgGuid + '&NewName=' + newName + '&Abbreviation=' + Abbreviation);

虽然我也试过这个:

$.ajax({
                type: "POST",
                url: Url,
                timeout: 60000,
                tryCount: 0,
                retryLimit: 3,
                success: function (data) {
                    $("#OrgTreeViewDiv").html(data);
                },
                error: function (httpRequest, textStatus, errorThrown) {
                    $(".Message").text("Error :" + textStatus + " " + errorThrown)
                }
            });
        });

最后控制器看起来像这样:

public PartialViewResult InsertOrganisationAbove(string OrgGuid, string NewName, string Abbreviation)
        {
            List<OrganisationLevelViewModel> OrganisationLevelList = new List<OrganisationLevelViewModel>();
            //Do loads of stuff which all works fine
            return PartialView("_OrganisationTreeView", OrganisationLevelList);
        }

那么会发生什么呢?它会调用部分视图,但不会进入显示模板,因此将其全部呈现为Displayfields列表。

我需要它来识别DisplayTemplate并将其写为。

它在Pageload上运行正常,只是AJAX调用遇到了这个问题。

任何帮助?

0 个答案:

没有答案