2015-02-13 2 views
1

Я пытаюсь повторно использовать свои частичные виды, как это:Рекурсивные частичный вид

<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> 

Но появляется ошибка последующей:

StackOverFlowException on mscorlib.dll

И процесс заканчивается ...

Итак: Это возможно сделать это? Есть ли у вас идеи, как их построить?

Я использую нокаут, и я сделать дерево класса и оказывать пользователь Im повторного использования PartialViews их замкнутые

ответ

4

Этого исключения (поведение) абсолютно нормален, потому что вы создаете бесконечной рекурсии:

Ваш вид отображает тот же вид, который отображает тот же вид, который отображает один и тот же вид ... и останавливается при ударе StackOverflowException.

Поставьте некоторое условие (if на вид) (реверсивное дно), чтобы остановить его.

Другое решение, я могу предложить вам использовать Knockout и , вызывать действие для отображения вида с использованием AJAX.

+0

Да, это правда, я должен построить представление, создающее POST, POST вернет мне представление (верните частичное), данные, которые я мог бы сделать примерно так: $ (selector-div) .html (data); и закончить !! ... Что вы думаете об этом решении ??? –

+0

Звучит как хороший выбор. Попробуй! :) –

+1

Спасибо за вашу помощь и идею ... –