Это происходит потому, что это настройки по умолчанию. В старых браузерах иногда отображение конечного тега блока или встроенного элемента на новой строке после дочернего элемента (фактически оставляя пробел, такой как неразрывный пробел или пустой текстовый узел) влияет на способ отображения страницы. У меня были проблемы с этим раньше. Например, следующее может иметь проблемы с отображением правильно, если у ваших якорей есть границы или отступы:
<a>
<img src="..." />
</a>
Иногда в нижней части ссылки может быть дополнительный интервал. Изменение его на следующее удаляет дополнительный интервал:
<a><img src="..." /></a>
По сути, глупое форматирование решает некоторые проблемы рендеринга в браузерах с некачественной поддержкой CSS, такой как IE6. Если у вас IE6, посмотрите на этот JSFiddle , который я создал, чтобы проиллюстрировать проблему. Внизу изображения есть дополнительный интервал, в котором теги привязки существуют в своих собственных строках.
Из Блог Скотта Гатри :
Если вы форматируете выделенную разметку и видите, что закрывающий тег не был перемещен в отдельную строку - это потому, что между концом предыдущей разметки и завершающим тегом нет места, и поэтому VS будьте осторожны, чтобы не изменить его, чтобы избежать изменения семантики рендеринга.
Так как уродливое форматирование или вывод конструктора в Visual Studio может с большей вероятностью работать в большем количестве браузеров, чем при правильно отформатированной разметке (например, XHTML).
Чтобы изменить значения по умолчанию для форматирования в Visual Studio, перейдите по адресу:
Tools > Options > Text Editor > HTML > Format > Tag Specific Options...
В разделе «Настройки по умолчанию» измените параметр «Разрывы строк» на «До и после» для параметров «Содержимое» для клиента и сервера.