Можете ли вы асинхронно изменить страницу содержимого ContentPlaceHolder главной страницы в.NET?
Из того, что я уже прочитал, это кажется невозможным, но я хотел посмотреть, есть ли у кого-нибудь секретный трюк в рукаве или хотя бы однозначное "нет".
Предположительно, главная страница - это на самом деле просто элемент управления для страницы содержимого, а не "мастер" страницы содержимого. Если бы я хотел перейти с одной страницы контента на другую страницу контента с той же главной страницей, я бы просто сказал
Response.Redirect("PageB.aspx");
Но это немедленно вызвало бы обратную передачу, мерцающую страницу, которая является дурацким пре-аджакским способом ведения дел.
В этом текущем проекте я пытаюсь понять, смогу ли я найти способ асинхронного изменения текущей страницы содержимого ContentPlaceHolder на главной странице при нажатии кнопки на главной странице.
Возможно ли это, если да, то как?
2 ответа
Я не знаю, если вы можете между страницами (.aspx), но это определенно можно сделать с помощью UserControls.
Страницы ASP.Net имеют свои собственные URL-адреса, поэтому вы пытаетесь переходить с одного URL-адреса на другой без обратной передачи, это просто не то, как это должно работать.
Использование пользовательских элементов управления (.ascx):
Создайте страницу, которая использует MasterPage и используйте что-то подобное в контенте
<ajax:UpdatePanel ...>
<ContentTemplate>
<asp:PlaceHolder ...>
</ContentTemplate>
</ajax:UpdatePanel>
Найдите UpdatePanel и настройте его параметры, чтобы сделать то, что вы хотите, а затем узнайте, как поменять пользовательские элементы управления в заполнителях.
Нет, вы не можете этого сделать, потому что главная страница на самом деле является элементом управления, отображаемым на конкретной странице aspx, а не фактически содержит страницу aspx, поскольку она обманчиво выглядит программно и в режиме конструктора.
Больше информации:
Однако вы можете использовать множество других элементов управления для имитации этого эффекта. Элемент управления asp:MultiView является одним из примеров, каждая "страница" может быть сделана в одном представлении и помещена в панель обновлений, что позволяет переключать ее асинхронно. В качестве альтернативы вы можете определить каждую страницу в отдельном пользовательском элементе управления и поместить их на панель обновления, асинхронно переключая видимое свойство этих элементов управления по мере необходимости.
Существует действительно много разных способов достижения эффекта, аналогичного изменению заполнителя содержимого главной страницы.