如何通过JavaScript事件重建部分视图?

时间:2016-09-29 11:07:46

标签: javascript asp.net asp.net-mvc asp.net-mvc-4 partial-views

我需要创建一个带有对象树和属性表的网页,用于从树对象中选择。我提出了三种观点。树的一个部分,一个部分来自属性表,一个用于组合这些视图。但是现在我遇到了问题,当我在树中选择对象时,我无法弄清楚如何填充属性表。

我的代码:  对于索引视图(组合视图):

<div class="container">
    <div class="row">
        <div class="col-md-6">
            @RenderPage("Tree.cshtml")
        </div>
        <div class="col-md-6">
            @RenderPage("Attributes.cshtml")
        </div>
    </div>
</div>

对于树:

<script src="./Scripts/bootstrap-treeview.js"></script>

<div class="panel panel-info">
    <div class="panel-heading">Дерево объектов</div>
    <div class="panel-body">
        <div id="tree"></div>
    </div>
</div>

<script type="text/javascript">

    var arrayOfArrays = JSON.parse('@Html.ViewBag.JsonString'.replace(/&quot;/g, '"'), function(k, v){
    if (k === "Product") 
        this.key = v;
    else if (k === "Name")
        this.value = v;
    else
        return v;
     });
    var jsonTree = JSON.stringify(arrayOfArrays);

$("#tree").treeview(
{
    data:jsonTree,
    levels:6
});
</script>

对于属性:

<div class="panel panel-info">
    <div class="panel-heading">Атрибуты</div>
    <div class="panel-body">
        <table class="table table-bordered table-responsive table-striped">
            <thead class="thead-inverse">
                <tr>
                    <th>Имя атрибута</th>
                    <th>Значение атрибута</th>
                </tr>
            </thead>
            <tbody>
            @foreach (var attr in Model.Objects[0].Attributes) 
            { 
                <tr>
                    <th>@attr.Name</th>
                    <th>@attr.Value</th>
                </tr>
            }
            </tbody>
        </table>
    </div>
</div>

我的树也有一个在选择树节点时调用的事件。看起来像:

$('#tree').on('nodeSelected', function(event, data) {
  //logic goes here
});

数据包含选定的节点数据。节点数据包含此对象的属性列表。 如何通过&#39; nodeSelected&#39;重建属性表?事件

1 个答案:

答案 0 :(得分:1)

为具有属性视图的div提供Id

<div class="col-md-6" id="divAttributes">
            @RenderPage("Attributes.cshtml")
</div>

在选择树节点时调用的事件内,输入以下代码:

$('#tree').on('nodeSelected', function(event, data) {
  //logic goes here
var url = '@Url.Action("AttributesPartial","YourController")'
//here append to url the selected node id in order to pass it to the partial  view

$.ajax(url).then(function(html){
       $("#divAttributes").html(html);
    });
    });

AttributesPartial操作是一个返回PartialViewResult Attributes.cshtml的操作,在您将获取所选节点的数据并返回其所需模型的操作中,您可以将节点id作为action方法的参数。