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