Подтвердить что ты не робот

Настройка форматирования блоков <%%> в редакторе 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) {%>

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

4b9b3361

Ответ 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>