динамическое создание гиперссылки

#asp.net

#asp.net

Вопрос:

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

если я посмотрю, что мой исходный код создается где-то еще и со страницы .aspx, кажется, что все на месте, где оно должно быть.

.aspx

 <div class="AZ">
    <ol class="AZlist">   
            <asp:PlaceHolder runat="server" ID="AToZ"></asp:PlaceHolder>  
    </ol>
</div>
  

.codebehind

 HyperLink links = new HyperLink();
links.Text =  "<li>"   CheckMe.ToString()   "</li>";
links.NavigateUrl = "<a href='#'"   CheckMe.ToString()   ">";
ph.Controls.Add(links); 
  

исходный код:

….
….

    <div class="AZ">
    <ol class="AZlist">
           // I WANT HYPERLINK HERE....!!!!!!!!!!!
    </ol>
    <br />
</div>
 </li>
  

но здесь она создается за пределами области div

<a href="#A"><li>A</li></a>

Ответ №1:

Я не думаю, что вам следует помещать эти теги в свойства .text и .navigateurl. просто поместите в них ссылку и текст. Поместите <li> теги вокруг заполнителя.

Комментарии:

1. <li> теги вокруг заполнителя? вы покажете, что вы имеете в виду под этим?

2. Прошло некоторое время с тех пор, как я делал asp.net веб-формы, но я нашел это в Интернете. Я думаю, это то, что вам нужно. HtmlGenericControl a = new HtmlGenericControl("ol"); HtmlGenericControl b = new HtmlGenericControl("li"); b.InnerHtml = "<a href='/'>Home</a>; a.Controls.Add(b); //similarly you can add more li controls to ul AToZ.Controls.Add(a); И удалите теги <ol>, потому что, если у вас нет ссылок для отображения, они вам не понадобятся (они генерируются динамически в этом фрагменте кода)

Ответ №2:

Откажитесь от того, как вы это делаете здесь. Попробуйте сделать свой старый тег runat=»server» и присвоить ему идентификатор. Затем создайте новый элемент управления ListItem, добавьте элемент управления hyperlink и добавьте элемент ListItem в ol.

Что-то вроде этого в коде:

 dim anLi = new ListItem([can't remember exact parameters])
dim aHyperlink = new Hyperlink([whatever to initialize])
anLi.addControl(aHyperlink)
theOl.controls.add(anLi)
  

Ответ №3:

Почему бы вместо этого не использовать asp: repeater.

Затем вы могли бы поместить всю свою разметку в шаблон aspx, используя шаблоны верхнего / подробного / нижнего колонтитула. Далее просто переведите значения текста и URL в формат, доступный для привязки, в исходном коде и привязке данных.

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