Проблема после использования jQuery для загрузки внешних страниц (aspx) в div (s) - PullRequest
1 голос
/ 16 марта 2011

У меня есть страница, которая объединяет разные разделы по разным страницам .aspx. Эти страницы будут загружены в соответствующие div (ы) динамически с помощью jQuery.load (). Все они отображаются правильно, однако при нажатии любой кнопки asp: на любой странице раздела вся главная страница будет заменена страницей раздела, даже если кнопка asp: просто выскакивает окно сообщения. Я не нашел способа это исправить, пожалуйста, советуйте!

Большое спасибо. Уильям Чой

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Когда вы отправляете страницу, ваш запрос переходит на вложенную страницу, и он отвечает только для этой страницы.Браузер получает ответ от вложенной страницы и просто отображает, что он возвращает.

Вот то, что я делаю, и это похоже.

У меня есть одна главная страница, и на этой странице я загружаю разделы через Ajax.Разделы - это пользовательские элементы управления ASP.NET (не страницы), вот почему: страницы имеют свои собственные формы и плохо воспроизводятся при вложении.Запрос ajax передает некоторые параметры, загружает элемент управления, а затем отображает его, используя пустую пустую страницу (что я объясню ниже).Сгенерированный HTML-код отправляется обратно на страницу и загружается в div.

Вот как я загружаю элемент управления (в этом примере «FormlessPage» - это фиктивная страница):

public class FormlessPage : Page { public override void VerifyRenderingInServerForm(Control control) { } }

//Ajax call
FormlessPage page = new FormlessPage();
UserControl ctrl = null;
ctrl = (UserControl)page.LoadControl("~/UserControls/someUC.ascx");
// Initialize parameters
// Add the control to the page
page.Controls.Add(ctrl);

// Render the page and capture the resulting HTML.
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, false);
// Return that HTML, as a string.
json = writer.ToString();
0 голосов
/ 16 марта 2011

Наиболее вероятной причиной будет то, что ваша кнопка отправляет сообщение обратно на соответствующую страницу.Вы должны отключить обратную запись, вернув false из функции / кода js, которые запускаются по нажатию кнопки.

Вы не упомянули об этом, какого поведения вы хотите добиться здесь - если консолидация просто для создания макетатогда вы должны исключить ненужные теги, такие как заголовок, тело и формы, из вывода страницы перед помещением в div.В этом случае лучше использовать пользовательские элементы управления (вместо страниц), а затем использовать некоторый обработчик, который будет загружать запрошенный пользовательский элемент управления на временную страницу, и использовать HttpServerUtility.Execute метод для захвата вывода - check эта статья , которая описывает эту технику.С другой стороны, вы хотите сохранить поведение дочерних страниц в посте, тогда iframes был бы подходящим вариантом.

...