在<script>“text / html”templates </script>中保持正确的HTML语法突出显示

时间:2013-01-21 23:55:29

标签: asp.net-mvc-3 visual-studio-2010 visual-studio razor

有没有办法在剃须刀视图中的JavaScript HTML模板中保留HTML / ASP.net语法突出显示和代码完成?

为了帮助突出显示(双关语)问题,请参阅此问题图片: enter image description here

编辑:此问题与Visual Studio 2010有关。

2 个答案:

答案 0 :(得分:4)

为它创建一个帮助器,如Syntax highlighting for script tags with html templates in Visual Studio 2010 MVC3 applications所示。

从那里获取代码,以下是该链接的基本要点。

首先,向HtmlHelperExtensions添加一些代码:

public static class HtmlHelperExtensions
{
    public static ScriptTag BeginHtmlTemplate(this HtmlHelper helper, string id)
    {
        return new ScriptTag(helper, "text/html", id);
    }
}

public class ScriptTag : IDisposable
{
    private readonly TextWriter writer;

    private readonly TagBuilder builder;

    public ScriptTag(HtmlHelper helper, string type, string id)
    {
        this.writer = helper.ViewContext.Writer;
        this.builder = new TagBuilder("script");
        this.builder.MergeAttribute("type", type);
        this.builder.MergeAttribute("id", id);
        writer.WriteLine(this.builder.ToString(TagRenderMode.StartTag));
    }

    public void Dispose()
    {
        writer.WriteLine(this.builder.ToString(TagRenderMode.EndTag));
    }
}

现在您可以像Html.BeginForm()

一样使用它
@using (Html.BeginHtmlTemplate("person-template"))
{
    <h3>Heading</h3>
    <p>Credits: <span></span></p>
}

瞧!通过隐藏Visual Studio中的相关部分来突出显示语法。

答案 1 :(得分:1)

这是WebForms的"same" solution(通过here

(尽管问题引用了MVC / Razor,我来这里寻找WebForms)

辅助

在您的代码隐藏.aspx.cs

public string ClientTemplateBegin(string attrId, string attrType = "text/html")
{
    return string.Format(@"<script type=""{0}"" id=""{1}"">", attrType, attrId);
}

public string ClientTemplateEnd()
{
    return "</script>";
}

用法

.aspx文件中:

<%= ClientTemplateBegin("scriptId", "text/ractive") %>
    <strong>Some Editor</strong>

    {{#each items}}
        Hello {{name}}!  Your age is {{age}}.
    {{/each}}

    <pre>
    {{ json(items) }}
    </pre>
<%= ClientTemplateEnd() %>