私は絶対に使いたいjQueryテンプレートを使用しています。 IDEの観点からの唯一の欠点は、スクリプトタグ内にHTML IntelliSenseがないことです。テンプレートスクリプトタグ内のマークアップがIntelliSenseと構文の強調表示を取得するようにVS2010をだます方法はありますか?VS2010 IntelliSense inside text/x-jquery-tmplスクリプトテンプレート
答えて
エディタを騙して、コード(HTMLヘルパーなど)で記述するようなスクリプトタグを書いていることを知らない限り、私はできないと思います。私は、タグ名を変更して(またはコメントして)、一時的にタグを変更して、やり直しています。確かにそれは愚かな解決策です。
script
タグを使用する代わりに、div
のような他のタグを使用して、style
からdisplay:none
に設定することもできます。まったく同じ方法で動作するはずです(例:this articleの真中)。あなたは完全な構文の色付けを取得し、そのようにインテリセンスます
@Html.Template("whatever", @<text>
<tr><td>template stuff here</td></tr>
</text>)
よう
public static class HtmlExtensions
{
public static MvcHtmlString Template(this HtmlHelper htmlHelper, string id, Func<dynamic, HelperResult> content)
{
var sb = new StringBuilder();
sb.AppendFormat("<script type='text/html' id='{0}'>", id);
sb.Append(content(null));
sb.Append("</script>");
return new MvcHtmlString(sb.ToString());
}
}
用途:あなたはMVCを使用している場合
あなたは、このようにHtmlHelperのための拡張メソッドを作ることができます。
を(ただし、VSはあなたのテンプレートがで構成された内容に応じHTML要素の無効な営巣について警告かもしれません)私は(ASP.NET 4つのWebフォームアプリケーションのために。)単純なカスタムサーバーサイドのコントロールを作成することで、この問題を解決したい:
[ToolboxData("<{0}:JqueryTemplate runat=server></{0}:JqueryTemplate>")]
[PersistChildren(true)]
[ParseChildren(false)]
public class JqueryTemplate : Control {
private bool _useDefaultClientIdMode = true;
[DefaultValue(ClientIDMode.Static)]
[Category("Behavior")]
[Themeable(false)]
public override ClientIDMode ClientIDMode {
get {
return (_useDefaultClientIdMode) ? ClientIDMode.Static : base.ClientIDMode;
}
set {
base.ClientIDMode = value;
_useDefaultClientIdMode = false;
}
}
protected override void Render(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/x-jquery-tmpl");
writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.RenderBeginTag(HtmlTextWriterTag.Script);
base.Render(writer);
writer.RenderEndTag();
}
}
と(<script>
タグの代わりに)その中に各jqueryのテンプレートを置く:
<script type="text/x-jquery-tmpl" id="myTemplateId">
... your template code goes here ...
</script>
:
<some:JqueryTemplate runat="server" ID="myTemplateId">
... your template code goes here ...
</some:JqueryTemplate>
はとHTMLでそれをレンダリングします
私はHtml.BeginFormに触発され、このように動作しますASP.NET MVC 3のためのヘルパーメソッド、作成:ビュー内
を:@usingの範囲内
@using (Html.BeginHtmlTemplate("templateId"))
{
<div>enter template here</div>
}
ものは強調表示されます構文。
ヘルパーのコード:錆びたのソリューションのように徹底やエレガントな
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));
}
}
これは最高の、最もエレガントな答え。それは投票されるべきです。 – adoss
別のWebフォームソリューションではなく、私はすべての私の他のページが継承するBasePageクラスクラスの内部でこれらの二つの機能をドロップ:
私のaspxで次にPublic Function Template(ByVal id As String) As String
' the type attribute does not matter as long as it's not "text/javascript"
Return "<script id='" + id + "' type='text/template'>"
End Function
Public Function Template() As String
Return "</script>"
End Function
:
<%= Template("templateID")%>
... your template code goes here ...
<%= Template()%>
- 1. VS2010ベータ1 Intellisense Speed
- 2. VS2010のIntelliSenseはすべてそこ
- 3. VS2010インテリセンスクラスファイル
- 4. Intellisenseは既存のWebサイトのVS2010で動作しません
- 5. VS2010 IDE Intellisenseを再構築するには?
- 6. TreeViewItem.Header inside inside
- 7. foreach inside foreach inside foreach
- 8. JavaScript VS2010のIntellisenseは非常に遅く、メモリが空いています
- 9. JS inside inside JS?または
- 10. Visual Studio 2010 Intellisenseフリーズ
- 11. VS2010
- 12. Javascript confirmbox + form inside
- 13. Oracle IF inside CASE
- 14. Android Button Inside PopupWindow
- 15. Android - ListView inside dialog
- 16. Echo inside echo PHP
- 17. package requires inside pkgIndex
- 18. C:timer inside/loop + scanf?
- 19. html table inside ngbTooltip
- 20. Facebook:iframe inside iframe?
- 21. キーボードイベントQMainWindow inside QMainWindow
- 22. WIX Paraffin insideプログラムファイルディレクトリ
- 23. Constant inside class
- 24. JPanel inside another
- 25. inside foreach in PHP
- 26. ExpandableListView inside ExpandableListView
- 27. CollectionView inside ViewController
- 28. var_dump inside wordpress functions.php
- 29. Angular2 subscribe inside subscribe
- 30. Scroll inside tbody angularjs
あなたは万が一ASP.NET MVCを使用していますか? –
これはVS2012で修正されているようです – Keith