Как загрузить частичный вид внутри окна Kendo по запросу

У меня есть окно кендо, данные которого загружаются с помощью вызова ajax. Это окно кендо действует как редактор виджетов, который позволяет пользователям изменять или манипулировать данными для отображения различных диаграмм и т. Д. После того, как пользователи настроили все параметры, они хотят предварительно просмотреть свою диаграмму / график перед отображением на странице. Я успешно построил окно модели и загрузил исходные данные с помощью одной кнопки ввода (предварительного просмотра), но теперь я не знаю, как загрузить частичное представление внутри окна модели при нажатии кнопки предварительного просмотра. Я не знаю, верен ли этот подход или нет, но мне явно нужно частичное представление, поскольку мне нужно построить модель, которая будет передана в это частичное представление для визуализации диаграммы / графика.

    $('.btnedit').click(function () {
        var pwrid = $(this)[0].id;

        $.ajax({
            url: '/Home/EditWidget/' + '?id=' + pwrid,
            type: 'GET',
            accepts: 'text/html',
            context: self,
            success: self.editWidgetWindowCallBack,
            error: function () { alert('Oops! Something went wrong'); },
            complete: function(){ }
        });
    });

editWidgetWindowCallBack: function (html, textStatus, jqXHR) {
    var model = $('#EditWidgetModelWindow').data('kendoWindow');
    model.content(html);
    model.center();
    model.open();
}

EditWidgetModelWindow - это окно моей модели кендо

Ниже приведен мой метод действий

public ActionResult EditWidget(string id)
{
    var widgetViewModel = // view model construction here.
    return PartialView("Widgets/_EditWidget", widgetViewModel);
}

вот как мое окно модели кендо загружает в него частичное представление редактора, и теперь я хочу загрузить еще одно частичное представление внутри этого частичного представления при нажатии кнопки. например если имя моего частичного представления - _Chart, а имя модели - ChartModel, как я могу вызвать это частичное представление из родительского частичного представления нажатием кнопки (по запросу) и отобразить его внутри существующего частичного представления в окне модели Kendo.


person Learning Curve    schedule 07.07.2015    source источник
comment
Здравствуйте, вы можете опубликовать часть своего кода на том, что у вас сейчас есть.   -  person Jamie Rees    schedule 07.07.2015
comment
Привет, Джейми, я обновил свой вопрос кодом   -  person Learning Curve    schedule 07.07.2015


Ответы (1)


Я использую этот подход для загрузки html в окно кендо:

  1. Действие MVC, возвращающее PartialViewResult
  2. Используйте метод jQuery load для получения html из точки 1
  3. Откройте окно кендо, если при вызове Ajax ошибок нет

Ваш код MVC - это

public ActionResult EditWidget(string id)
{
    var widgetViewModel = // view model construction here.
    return PartialView("Widgets/_EditWidget", widgetViewModel);
}

Вы определяете разметку html, которая содержит окно кендо:

@(Html.Kendo().Window()
    .Name("wndWindow")  
    .Content(@<text>
         <div id="wndContent">

    </div>
   </text>)

) )

В вашем скрипте используйте jQuery для получения html:

$('.btnedit').click(function () {
   var pwrid = $(this)[0].id;

   $('#wndContent').load('/Home/EditWidget/', {id: prwid}, function (response, status, xhr) {
            if (status == "error"){
                try{
                    var msge = $.parseJSON(response);
                    // get the server error
                } catch(e){
                    alert("Error parsing server response");
                }
            }else{
                $("#wndWindow").data("kendoWindow").open().center();
            });
person anmarti    schedule 28.09.2015
comment
Спасибо за ответ, анмарти. Я уже решил эту проблему некоторое время назад, но не обновил свой ответ. Уверен, ваш ответ обязательно кому-то поможет. - person Learning Curve; 29.09.2015