Проблема производительности с частичными представлениями

У меня есть представление со многими вещами, среди них это:

@Html.Partial("AddWindow")
@Html.Partial("EditWindow")

Каждое из этих частичных представлений содержит окно кендо, содержимое которого загружается через Ajax.

Окна кендо в каждом фрагменте открываются нажатием кнопки, но на самом деле они загружаются сразу же после доступа к странице. Я просто хочу, чтобы они загружались, когда я нажимаю эти кнопки.

Без этих двух строк кода анимация CSS была плавной по всей странице. Теперь они ломаются на секунду при каждой Ajax-загрузке (я пытался удалить один из партиалов, и выявляется только один разрыв, а отсутствие партиалов означает полное отсутствие разрыва). Разрывы невидимы, когда окна фактически открыты, но при входе на страницу анимация CSS прерывается дважды, по одному при каждой загрузке Ajax. После этого все в порядке.

function openAdd() {
    $("#addWindow").data("kendoWindow").center().open();
}

Я думал, что внутри вышеупомянутой функции должно быть что-то, что не только открывает окно кендо, но и загружает партиал в представление.

Любая помощь?


person chiapa    schedule 13.11.2014    source источник
comment
поместите код одного из ваших представлений, чтобы изменить его для вас   -  person Monah    schedule 13.11.2014


Ответы (1)


вот что ты можешь сделать

@(Html.Kendo().Window().Name("addWindow")
    .Visible(false)
    .Modal(true)
    .Draggable(true)
    .Width(450)
    .Height(400)
)


<script type="text/javascript">
 function openAdd() {
    var window = $("#addWindow").getKendoWindow();
    window.refresh({
         url: '@Url.Action("Action", "Controller")',
    });
    window.title('Title');
    window.center().open();
}
</script>

Надеюсь, что это поможет вам

person Monah    schedule 13.11.2014
comment
Спасибо, я попробую это в ближайшее время и вернусь к вам. Кстати, у вас в коде после '@Url.Action("Action", "Controller")' есть лишняя запятая: уберите ее - person chiapa; 13.11.2014
comment
если вам нужна помощь о том, как передать идентификатор в окно редактирования, продолжайте и спросите - person Monah; 13.11.2014
comment
В этом нет необходимости. Это не работает, так как ломается в строке обновления: окно еще не существует, оно существует только внутри частичного представления, которое изначально не было загружено. - person chiapa; 13.11.2014
comment
поместите окно за пределы частичного представления, и к нему можно будет получить доступ с другого вида ( Добавить , Изменить ) - person Monah; 13.11.2014
comment
Да, я уверен, что это сработает, но я хотел, чтобы окно было внутри частичного представления, чтобы использовать его повторно. Таким образом, мне придется размещать окна внутри каждого представления вместо простого частичного вызова. Ты знаешь как? - person chiapa; 13.11.2014
comment
затем создайте окно в javascript, прежде чем пытаться его загрузить - person Monah; 13.11.2014
comment
вопрос: где кнопки, которые будут запускать окно? внутри частичного вида или снаружи? - person Monah; 13.11.2014
comment
Кнопки, конечно же, находятся за пределами частичного просмотра. Частичный вид содержит только окно кендо. - person chiapa; 13.11.2014