有没有办法在剃须刀视图中的JavaScript HTML模板中保留HTML / ASP.net语法突出显示和代码完成?
为了帮助突出显示(双关语)问题,请参阅此问题图片:
编辑:此问题与Visual Studio 2010有关。
答案 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() %>