配置< %%>的格式Visual Studio编辑器中的块

时间:2010-07-01 16:20:59

标签: asp.net visual-studio visual-studio-2010

在Visual Studio 2010中,在“工具”下 - >选项 - >文字编辑器 - > HTML - >格式化 - >标记特定选项,有用于配置编辑器如何自动格式化不同HTML和ASP.NET标记的选项。这包括如果它应该自动在标记之前和之后添加换行符等等。

是否可以为< %%>配置格式规则? <%=%>和<%:%>以类似的方式阻止?

特别是,我不想在<%=和<%:blocks之前强制换行。

例如,我已经将h1标记的选项配置为不在其内容周围添加换行符,并且对静态内容有效,但是当有<%:或<%=时它不起作用在h1标签中阻止。我目前得到这个:

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

但我想这样:

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

在完美的世界中,我还想自动格式化&lt; %%&gt;的内容。块以确保&lt;%及其内容之间始终存在空格。

例如,好:

<% if (something) { %>

坏:

<%if (something) {%>

那么,是否有任何设置埋藏在某处以控制这些格式化行为?

4 个答案:

答案 0 :(得分:8)

感谢@schellack让我朝着正确的方向努力。以下是获取我想要的行为所需的设置(所有这些都在标签特定选项对话框中):

  • 默认设置 - &gt;客户端标记支持内容
    • 换行符:
    • 之前和之后
    • (这使得h1,p和类似标签的行为与我想要的方式相同。其他人可能会想要无选择。我想是个人喜好。)
  • 在客户端HTML标记下添加新标记。
    • 标记名称:%
    • 结束标记:无结束标记
    • 换行符:
    • 之前和之后
    • (这会捕获实际的代码块,并在代码块之前和之后使用换行符将它们与HTML标记分开。)
  • 在客户端HTML标记下添加另一个新标记
    • 标记名称:%:
    • 结束标记:无结束标记
    • 换行符:无
    • (这会捕获&lt;%:%&gt;阻止并使其与HTML标记保持内联,而不会有任何换行符。)
  • 在客户端HTML标记下添加另一个新标记
    • 标记名称:%=
    • 结束标记:无结束标记
    • 换行符:无
    • (与前一个类似。这会捕获&lt;%=%&gt;块并使其与HTML标记保持内联,而不会有任何换行符。)

诀窍是编辑器似乎认识到&lt; %%&gt;块作为名为'%'且没有结束标记的客户端标记。 &lt;%:%&gt;的相同交易和&lt;%=%&gt;。

使用这些设置(与Visual Studio中的其余默认设置相结合),我得到了如下所示的格式化标记(这是我正在寻找的紧凑形式):

    <h1><%: Model.Name %></h1>
    <ul>
        <% foreach (var item in Model.Items) { %>
        <li><%: item %></li>
        <% } %>
    </ul>

到目前为止,我的问题的第二部分似乎不可能。

答案 1 :(得分:2)

您正在寻找合适的区域:

  

工具 - &gt;选项 - &gt;文字编辑器 - &gt;   HTML - &gt;格式化 - &gt;标签特定   选项。

但是,您需要在“默认设置”下的“客户端代码支持内容”中将“换行符”设置为“无”。 Visual Studio正在查看此设置,而不是<h1 />标记的设置。

我不相信这会给你所需的<% %>标签内的空格,但它会修复那些有害的额外换行符。

[编辑] 我最初说过设置“服务器标签支持内容”的选项,但我认为它实际上是“客户端标签支持内容”(我在上面进行了更改)。您还可以将“换行符”设置设置为“之前和之后”而不是“无”,如果这样可以更好地为您提供所需内容。您可能还需要将“客户端标记不支持内容”的换行符设置为“无”。

答案 2 :(得分:1)

从VS的角度来看,两个文件夹(Client和ASP.NET)之间没有任何显着差异。它们的存在只是为了方便。事实是标签只能通过其名称识别,并且(幸运的是)VS忽略它不是真实标签。因此,您可以将主题设置放在任一文件夹中。甚至更多的人可以创建(我个人做的)另一个文件夹(例如,称为表达式)并在那里存储设置。

关于更改“默认设置”。如果只想为几个标签更改设置,那么恕我直言最好创建/更改这些标签本身的规则而不是更改默认值(似乎缺少 h1-h6 规则默认的规则集。)

答案 3 :(得分:0)

嗯,有编辑 - &gt;高级 - &gt;格式文档,我想这也会混淆你的代码。我搜索了大量的文档试图找到更多的东西,但据我所知,没有任何东西。

修改 问题不在HTML格式选项中,而是与&lt; %%&gt; “标签”。例如:<h2><span></span></h2>效果很好。正如我所说,我不认为这可以做到。

目前我建议使用:

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

<h2>
    <%
        if(true)
            Response.Write("Hello World");
    %>
</h2>