Настройка форматирования блоков <%%> в редакторе Visual Studio
В Visual Studio 2010 в меню "Инструменты" → "Параметры" → "Текстовый редактор" → "HTML" → "Форматирование" → "Специфичные теги", есть параметры для настройки способа автоматического форматирования HTML-тегов HTML и ASP.NET. Это включает в себя такие вещи, как если бы он автоматически помещал новую строку до и после тега и т.д.
Есть ли место для настройки правил форматирования для <%% > <% =% > и <%:% > блоков аналогичным образом?
В частности, я бы не хотел форсировать новую строку перед <% = и <%: blocks.
Например, я уже настроил параметры тега h1, чтобы не добавлять новые строки вокруг его содержимого и отлично работает со статическим контентом, но он не работает, когда есть <%: или <% = блок в теге h1. В настоящее время я получаю следующее:
<h1>
<%: Model.Name %></h1>
но я бы хотел:
<h1><%: Model.Name %></h1>
В идеальном мире я также хотел бы автоматически форматировать содержимое блоков <%% > , чтобы убедиться, что между <% и его содержимым всегда есть пробел.
Например, хорошо:
<% if (something) { %>
плохо:
<%if (something) {%>
Итак, есть ли какие-либо настройки, которые где-то захоронены, чтобы управлять одним из этих способов форматирования?
Ответы
Ответ 1
Спасибо @schellack за то, что он подтолкнул меня в правильном направлении. Вот настройки, которые мне нужны для получения желаемого поведения (все в диалоговом окне параметров конкретных тегов):
- Настройки по умолчанию → Клиентский тег поддерживает содержимое
- Разрывы строк: до и после
- (Это делает h1, p и подобные теги ведущими так, как я хотел. Другие могут хотеть None в качестве выбора. Предпочтение лично мне кажется.)
- Добавить новый тег под HTML-тегами клиента.
- Название тега:%
- Закрывающий тег: закрывающий тег
- Разрывы строк: до и после
- (Это улавливает фактические блоки кода и сохраняет их отдельно от разметки HTML с разрывами строк до и после блоков кода.)
- Добавить новый тег под HTML-тегами клиента
- Название тега:%:
- Закрывающий тег: закрывающий тег
- Разрывы строк: Нет
- (Это улавливает <%:% > блокирует и сохраняет их в строках с разметкой HTML без каких-либо разрывов строк.)
- Добавить новый тег под HTML-тегами клиента
- Название тега:% =
- Закрывающий тег: закрывающий тег
- Разрывы строк: Нет
- (похож на предыдущий. Это улавливает <% =% > блокирует и сохраняет их в строках с разметкой HTML без разрывов строк.)
Фокус в том, что редактор, похоже, распознает <%% > блокирует как клиентский тег с именем "%", который не имеет закрывающего тега. Та же сделка для <%:% > и <% =% > .
С этими настройками (в сочетании с остальными значениями по умолчанию в Visual Studio) я получаю форматированную разметку, которая выглядит следующим образом (которая является компактной формой, которую я искал):
<h1><%: Model.Name %></h1>
<ul>
<% foreach (var item in Model.Items) { %>
<li><%: item %></li>
<% } %>
</ul>
Пока еще нет, что вторая часть моего вопроса возможна.
Ответ 2
Вы искали подходящую область:
Инструменты → Параметры → Текстовый редактор → HTML → Форматирование → Спецификация тега Опции.
Однако вам нужно установить опцию "Клиентский тег поддерживает содержимое" в разделе "Настройки по умолчанию", для разрывов линии - "Нет" . Visual Studio рассматривает этот параметр, а не настройку тега <h1 />
.
Я не верю, что это даст вам интервал внутри тега <% %>
, который вы хотите, но он исправит эти пагубные дополнительные разрывы строк.
[EDIT]
Первоначально я сказал, чтобы установить параметр "Содержимое тега для поддержки сервера", но я думаю, что на самом деле "Клиентский тег поддерживает содержимое" (я изменил это выше). Вы также можете установить для параметра "Разрывы линии" значение "До и после" вместо "Нет" , если это лучше дает вам то, что вы ищете. Вам также может потребоваться установить разрывы строк для "Тег клиента не поддерживает содержимое" на "Нет" .
Ответ 3
Действительно, нет никакой существенной разницы между двумя папками (Client и ASP.NET) с точки зрения VS. Они существуют только для удобства. Дело в том, что тег распознается только по его имени и (к счастью) VS игнорирует его не как истинный тег. Поэтому вы можете поместить настройки объекта в любую из папок. Еще больше можно создать (что лично я сделал) другую папку (называемую, например, Expressions) и сохранить там настройки.
Относительно изменения "Настройки по умолчанию". Если вы хотите изменить настройки только для нескольких тегов, тогда IMHO лучше создать/изменить правила для этих тегов, а не изменять значения по умолчанию (появляется, что правила h1-h6 отсутствуют с набор правил по умолчанию).
Ответ 4
Ну, там Edit → Advanced → Format Document, который, как я думаю, также испортил ваш код. Я искал множество документации, пытаясь найти что-то еще, но, насколько я могу судить, ничего нет.
Edit:
Проблема заключается не в параметрах форматирования HTML, а в теге <%% > ". Например: <h2><span></span></h2>
работает достаточно хорошо. Как я уже сказал, я не думаю, что это можно сделать.
На данный момент я рекомендую использовать:
<h2>
<%="Hello World" %>
</h2>
или
<h2>
<%
if(true)
Response.Write("Hello World");
%>
</h2>