我有一个局部视图,可以加载模板并且工作正常。但是当我使用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调用遇到了这个问题。
任何帮助?