递归部分视图

时间:2015-02-13 15:09:05

标签: c# asp.net-mvc knockout.js

我正在尝试重复使用这样的部分视图:

<div>
<ul data-bind="foreach: DetailViewModelObject.ConfigsChild">
    <li>
        <table>
            <tr>
                <td colspan="5">
                    <input type="hidden" data-bind="value: DetailViewModelObject.Id" />
                </td>
            </tr>
            <tr>
                <td>
                    Llave
                </td>
                <td></td>
                <td>
                    Valor
                </td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <td>
                    <input type="text" data-bind="value: DetailViewModelObject.Key" />
                </td>
                <td>
                    <input type="button" value="..." class="btn bg-primary" data-bind="click: DetailViewModelObject.SetPropertiesKeyCommand" style="margin: 5px" />
                </td>
                <td>
                    <input type="text" data-bind="value: DetailViewModelObject.Value" />
                </td>
                <td>
                    <input type="button" value="..." class="btn bg-primary" data-bind="click: DetailViewModelObject.SetPropertiesValueCommand" style="margin: 5px" />
                </td>
                <td>
                    <input type="button" value="Agregar configuración" class="btn bg-warning" data-bind="click: DetailViewModelObject.AddConfigCommandChild" style="margin: 5px" />
                </td>
            </tr>
            <tr>
                <td colspan="5">
                    @Html.Partial("~/Views/ApplicationConfig/_PartialApplicationConfigDetail.cshtml")
                </td>
            </tr>
        </table>
    </li>
</ul>

但是出现以下错误:

  

mscorlib.dll上的StackOverFlowException

过程结束......

所以:这是可行的吗?你们有没有想过如何构建它?

我正在使用淘汰赛,我正在制作一个类树和渲染给用户我重复使用PartialViews他们自己

1 个答案:

答案 0 :(得分:4)

此异常(行为)绝对正常,因为您正在创建无限递归

您的视图呈现相同的视图,该视图呈现相同的视图,呈现相同的视图...并且在StackOverflowException被点击时停止。

在视图中添加一些条件if)(递归底部)以阻止它。

我建议你使用的另一个解决方案是使用Knockout和调用动作来使用AJAX显示视图