ASP.NET + jQuery UI Модальный: загрузить страницу aspx в модальный диалог - PullRequest
3 голосов
/ 13 февраля 2010

Мне нужно загрузить страницу aspx в модальное диалоговое окно пользовательского интерфейса jQuery. Я использовал следующий подход: загрузите содержимое страницы с помощью ajax-вызова в div диалога и покажите его:

$.get('Page.aspx', function(response){
    $('#dialog').html(response);
    $("#dialog").dialog('open');
});

но у меня очень странная ошибка (IE8) в строке 137215738 (!): 'theForm.elements.length' - является нулевым или нет объектом . JS debbuger говорит, что исходный код недоступен для такого расположения. У меня есть предположение, что эта ошибка происходит из-за нескольких тегов 'form', которые появляются на странице после вызова ajax

Интересно, как я могу это исправить? Или, может быть, какой-то другой способ показать страницу aspx в модальном диалоге?

Ответы [ 4 ]

6 голосов
/ 13 февраля 2010

Как насчет того, чтобы поместить IFRAME в модальный режим и установить для IFRAME src значение Page.aspx?

4 голосов
/ 13 февраля 2010

Вы не можете полностью встроить содержимое одной страницы ASPX в другую по нескольким причинам:

  1. Вы будете вкладывать <html> теги бессмысленным способом.
  2. Вы загрязняете состояние javascript одной страницы другим.

Вам необходимо визуализировать Page.aspx в виде параллельного представления, а не включать всю полезную нагрузку страницы ASPX.

Я не уверен на 100%, можете ли вы сделать это в plain-old-asp.net без вызова функции Render отдельных элементов управления, используя поток ответа в качестве цели.

Однако в ASP.NET-MVC вы можете использовать результат PartialView.

2 голосов
/ 10 мая 2010

щелкните правой кнопкой мыши свой веб-проект в Visual Studio и добавьте новый универсальный обработчик HTTP. Код будет выглядеть так:

DialogContentHandler.ashx

    public class DialogContentHandler: IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string s = getDialogContent();
            context.Response.Write(s);
        }

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
    }

код aspx:

$.get('DialogContentHandler.ashx', function(response){
    $('#dialog').html(response);
    $("#dialog").dialog('open');
});
0 голосов
/ 14 февраля 2010

Решено путем создания универсального обработчика HTTP и записи в ответ только необходимой разметки html.

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