Настройка форматирования блоков <%%> в редакторе Visual Studio - PullRequest
12 голосов
/ 01 июля 2010

В Visual Studio 2010 в разделе Сервис -> Параметры -> Текстовый редактор -> HTML -> Форматирование -> Параметры, относящиеся к тегам, есть параметры для настройки автоматического форматирования редактором различных тегов HTML и ASP.NET. Это включает в себя такие вещи, как автоматическое добавление новой строки до и после тега и т. Д.

Есть ли место для настройки правил форматирования для блоков <%%> <% =%> и <%:%> аналогичным образом?

В частности, я бы не хотел вводить новую строку перед блоками <% = и <% :. </p>

Например, я уже настроил параметры для тега h1, чтобы они не добавляли новые строки вокруг его содержимого, и это прекрасно работает со статическим содержимым, но не работает, когда в блоке <%: или <% = тег h1. В настоящее время я получаю это: </p>

<h1>
    <%: Model.Name %></h1>

но мне бы хотелось:

<h1><%: Model.Name %></h1>

В идеальном мире я также хотел бы автоматически отформатировать содержимое блоков <%%>, чтобы всегда был пробел между <% и его содержимым. </p>

Например, хорошо:

<% if (something) { %>

плохой

<%if (something) {%>

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

Ответы [ 4 ]

8 голосов
/ 02 июля 2010

Спасибо @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 голосов
/ 02 июля 2010

Вы искали в правильном месте:

Инструменты -> Параметры -> Текстовый редактор -> HTML -> Форматирование -> Специфичные теги Параметры.

Однако вам нужно установить опцию в «Клиентский тег поддерживает содержимое» в разделе «Настройки по умолчанию» для разрывов строк на «Нет». Visual Studio использует этот параметр, а не параметр для тега <h1 />.

Я не верю, что это даст вам интервал внутри тега <% %>, который вы хотите, но это исправит эти пагубные дополнительные разрывы строк.

[EDIT] Первоначально я сказал установить параметр для «Серверный тег поддерживает содержимое», но я думаю, что на самом деле это «Клиентский тег поддерживает содержимое» (я изменил это выше). Вы также можете установить для параметра «Разрывы строки» значение «До и после» вместо «Нет», если это лучше дает вам то, что вы ищете. Вам также может понадобиться установить разрывы строк для «Клиентский тег не поддерживает содержимое» на «Нет».

1 голос
/ 15 июля 2011

Действительно, между двумя папками (Client и ASP.NET) с точки зрения VS нет существенной разницы. Они существуют только для удобства. Дело в том, что тег распознается только по его имени и (к счастью) VS игнорирует, что это не истинный тег . Поэтому вы можете поместить настройки темы в любую из папок. Более того, можно создать (что я лично сделал) другую папку (например, Выражения ) и сохранить там настройки.

По поводу изменения «Настройки по умолчанию». Если кто-то хочет изменить настройки только для нескольких тегов, тогда IMHO, лучше создать / изменить правила для самих этих тегов, чем изменять значения по умолчанию (кажется, что правила h1-h6 отсутствуют по умолчанию свод правил).

0 голосов
/ 02 июля 2010

Ну, есть Edit -> Advanced -> Format Document, который, я думаю, также испортил ваш код.Я искал множество документов, пытаясь найти что-то большее, но, насколько я могу сказать, ничего нет.

Редактировать: Проблема не в параметрах форматирования HTML, ас тегом <%%>.Например: <h2><span></span></h2> работает довольно хорошо.Как я уже сказал, я не думаю, что это можно сделать.

На данный момент я рекомендую использовать:

<h2>
    <%="Hello World" %>
</h2>

или

<h2>
    <%
        if(true)
            Response.Write("Hello World");
    %>
</h2>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...