Получение данных от элемента управления ASP.NET Dundas до Ajax.Submit в ASP.NET MVC - PullRequest
1 голос
/ 04 февраля 2010

Я работаю над проектом в ASP.NET MVC с использованием C # 3.0.

Я использую Dundas Chart Control для OLAP. Поскольку элемент управления Dundas напрямую не поддерживает MVC, он используется на стандартной странице ASP.NET с файлом codebehind. Эта страница отображается в iFrame обычного представления, возвращаемого действием контроллера.

У меня есть кнопка в iFrame, которая отправляет форму через Ajax (используя jQuery) методу на контроллере. Я также написал метод расширения для OlapChart, который возвращает XML текущего отчета.

То, что я ищу, - это способ передачи XML, созданного методом расширения, в действие контроллера, которое обрабатывает Ajax-запрос.

Я разработал только с использованием ASP.NET MVC, поэтому я могу упустить что-то очевидное в элементах управления Code Behind и ASP.NET.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2010

Я «решил» это, создав экземпляр контроллера в выделенном фрагменте кода - в этом проекте с помощью файла Spring.net IOC objects.xml и Spring.net XmlObjectFactory.

Для кнопкиЯ добавил HtmlInputButton в код и установил обработчик события onclick.Это было сделано асинхронно с использованием метода Dundas OlapManager.GetCallbackEventReference () в сочетании с новым обработчиком команд, назначенным для диаграммы OLAP, который предоставляет вызовы для вызова методов контроллера.

В функции Page_Load ():

OlapClient1.OlapChart.Command += new CommandEventHandler(OlapChart_Command);
            SaveDci.Attributes["onclick"] =
                OlapClient1.OlapManager.GetCallbackEventReference(OlapClient1.OlapChart, "SaveDci", typeof(OlapChart));
            SaveSnapshot.Attributes["onclick"] =
                OlapClient1.OlapManager.GetCallbackEventReference(OlapClient1.OlapChart, "SaveSnapshot", typeof(OlapChart));

И обработчик команд OLAP:

private void OlapChart_Command(object sender, CommandEventArgs e)
    {
        if (e.CommandName.Equals("SaveDci"))
        {
            // Function to call appropriate controller method
            SaveAsData(sender, e);
        }
        if (e.CommandName.Equals("SaveSnapshot"))
        {
            // Function to call appropriate controller method
            SaveAsSnapshot(sender, e);
        }
    }

Обновление iFrame с ответом с использованием jQuery и метода OlapMananger.ExecuteClientScript ():

OlapClient1.OlapManager.ExecuteClientScript("$('#UpdatePanel').text('" + returnMessage + "');");
0 голосов
/ 04 февраля 2010

"уродливым" способом может быть сохранение xml в сеансе или кеше, к которым вы можете получить доступ как со страниц controllrs, так и со страниц aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...