Как динамически создавать новые гиперссылки в ASP.NET? - PullRequest
4 голосов
/ 04 июня 2009

Я объясню, чего я пытаюсь достичь:

Я хочу, чтобы у меня была ситуация, когда я могу создать столько элементов управления, сколько захочу, создав их в цикле внутри кода. Я могу сделать это, используя PHP, смешивая код PHP и код HTML. Это позволяет мне динамически генерировать фактические теги HTML.

В ASP.NET я не нашел способа воспроизвести эту функцию.

Я думал об использовании цикла в коде для чего-то вроде функции Init (), чтобы создать массив объектов new (), установить их атрибуты и надеяться, что он будет передан в файл aspx, но это не так т работа.

Как мне это сделать?

Ответы [ 4 ]

9 голосов
/ 04 июня 2009

Если вы хотите динамически создать элемент управления ASP.Net Hyperlink Вы можете просто сделать это:

HyperLink hyp = new HyperLink();
    hyp.ID = "hypABD";
    hyp.NavigateUrl = "";
    Page.Controls.Add(hyp);
4 голосов
/ 04 июня 2009

Есть много способов сделать это в asp.net:

  1. Если вы действительно хотите, вы можете поместить цикл, используя теги <% %>, прямо в разметку aspx, как с php или классическим asp. Это не рекомендуется.
  2. Вы можете поместить заполнитель или элемент управления панели в свою форму, создать столько элементов управления гиперссылками или тегов привязки, сколько вы хотите в своем коде, и добавить их в коллекцию элементов управления заполнителя. Это немного лучше, но все же не оптимально.
  3. Вы можете разместить разумное количество элементов управления гиперссылками на странице, установить для их свойства visible значение по умолчанию false и "включить" те, которые вам нужны. Это предпочтительнее # 2 из-за некоторых странностей с жизненным циклом страницы asp.net.
  4. Эти ссылки происходят от где-то , и это где-то обычно база данных или другой разумный источник данных. Так что сделайте это управляемым данными & mdash; привязать этот источник данных к элементу управления, такому как повторитель, вид сетки, подробное представление или подобное. Это, вероятно, ваш лучший вариант.
4 голосов
/ 04 июня 2009

Если вы хотите динамически генерировать элементы управления и вам не нужно иметь эти PostBack на сервере (то есть, когда элемент управления нажимается / изменяется, он возвращается на ту же страницу) - вы можете использовать элементы управления в System.Web.UI.HtmlControls пространство имен.

, например

HtmlAnchor link = new HtmlAnchor();
link.href = "www.stackoverflow.com";
Page.Controls.Add(link);

Надеюсь, это даст вам достаточно фона.

РЕДАКТИРОВАТЬ: Вы можете использовать вышеуказанный код в цикле и заменить фиксированное значение на то, что исходит из базы данных / объекта.

4 голосов
/ 04 июня 2009

Ну, имейте в виду, что есть разница между гиперссылками и кнопками ссылок в ASP.Net

Если вы просто хотите использовать гиперссылки, вы можете создать столько, сколько захотите, создав объект HyperLink, создав новые объекты и добавив их в коллекцию элементов управления некоторого элемента управления, например панель или диапазон или что-то подобное.

Кнопки Link немного отличаются. Вы должны использовать элемент управления Repeater, если вы хотите создать ссылку, которая отправляет обратно на сервер. (Ну, не обязательно, но альтернатива - хакерская работа.)

Гиперссылки могут быть созданы с помощью элемента управления Repeater, и, если возможно, это метод, который я бы порекомендовал.

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