我正在尝试重复使用这样的部分视图:
<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他们自己
答案 0 :(得分:4)
此异常(行为)绝对正常,因为您正在创建无限递归:
您的视图呈现相同的视图,该视图呈现相同的视图,呈现相同的视图...并且在StackOverflowException
被点击时停止。
在视图中添加一些条件(if
)(递归底部)以阻止它。
我建议你使用的另一个解决方案是使用Knockout和调用动作来使用AJAX显示视图。