2013-10-25 3 views
0

Вот HTML код, который я хочу написать в выходной странице:В ASP.NET как написать <a> тег в другой тег <a>

Response.Write ("<a href=\"page2.aspx\">Page2" + 
       "<a href=\"page3.aspx\">Page3</a></a>"); 

я ожидаю следующий вывод:

<a href="page2.aspx"> 
    Page2 
    <a href="page3.aspx"> 
    Page3 
    </a> 
</a> 

Но я получаю следующий:

<a href="page2.aspx"> 
    Page2 
</a> 
<a href="page3.aspx"> 
    Page3  
</a> 

кто-нибудь знает, почему Response.Write CLO ses тег и как изменить это поведение?

ответ

3

HTML запрещает вложенные якоря.

модель Содержание:
Прозрачный, но не должно быть никакого интерактивного контента потомок.

- The a element

Либо ASP зачищают до разметки, или вы смотрите в инспекторе DOM после того, как браузер пытался оправиться от вашей ошибки.

+0

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

+0

Прост достаточно сказать: используйте View Source вместо инспектора DOM. И firefox не отображает его «правильно», нет «правильно». Не пытайтесь написать недействительный HTML. – Quentin

+0

Nice, View Source подтверждает, что ASP не изменяет мою страницу. Это делает мой веб-браузер. Это все ошибка firefox, которая уважает правила HTML. Спасибо за ваше объяснение. – Nicolas

2

Вы не можете вставить a элемент внутри другого a, HTML не допускает, что это неверно, браузер просто проанализирует их как отдельные теги a.

As Per W3C

ссылки и якоря определяется элемент не должен быть вложенная; элемент A не должен содержать никаких других элементов A.


Если вы хотите открыть несколько ссылок на один якорь тег, используйте onclick событие с window.open() см мой ответ here для получения более подробной информации.

+0

Хорошо, я вижу, вложенные якоря запрещены в хороших практиках. Но он работает, если я сам пишу HTML (firefox управляет им). Поэтому мой вопрос заключается в том, почему метод Response.Write меняет мою строку (может быть, только потому, что запрещается встраивать якоря :)). Спасибо за 'onclick', это хорошая идея. – Nicolas

Смежные вопросы