Конфигурирование форматирования <% %> блоки в редакторе Visual Studio

В Visual Studio 2010, под Инструментами-> Опции-> Текстовый редактор-> HTML-> Форматирующий-> Тег Определенные Опции, существуют опции для конфигурирования, как редактор автоматические форматы другой HTML и ASP.NET отмечает. Это включает вещи как то, если это должно автоматически поместить новую строку прежде и после тега и т.д.

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

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

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

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

но я хотел бы это:

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

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

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

<% if (something) { %>

плохо:

<%if (something) {%>

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

12
задан Erv Walter 1 July 2010 в 16:56
поделиться

3 ответа

Спасибо @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>

Пока она не отображается что вторая часть моего вопроса возможна.

8
ответ дан 2 December 2019 в 22:04
поделиться

Вы искали в нужной области:

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

Тем не менее, вам необходимо установить параметр «Тег клиента поддерживает содержимое» в разделе «Настройки по умолчанию» для разрывов строк на «Нет». Visual Studio смотрит на этот параметр, а не на параметр для тега

.

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

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

2
ответ дан 2 December 2019 в 22:04
поделиться

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

Изменить: Проблема не в параметрах форматирования HTML, а в теге <%%>. Например:

работает достаточно хорошо. Как я уже сказал, я не думаю, что это можно сделать.

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

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

или

<h2>
    <%
        if(true)
            Response.Write("Hello World");
    %>
</h2>
0
ответ дан 2 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: