Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

154
Views
VS2010 IntelliSense dentro de plantillas de secuencias de comandos text/x-jquery-tmpl

He estado usando plantillas de jQuery que me encanta usar. El único inconveniente desde el punto de vista del IDE es la falta de HTML IntelliSense dentro de la etiqueta del script. ¿Hay alguna manera de engañar a VS2010 para que el marcado dentro de las etiquetas de script de plantilla obtenga IntelliSense y resaltado de sintaxis?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Creé un método auxiliar para ASP.NET MVC 3 que funciona así, inspirado en Html.BeginForm:

dentro de la vista:

 @using (Html.BeginHtmlTemplate("templateId")) { <div>enter template here</div> }

Cualquier cosa dentro del alcance de @using se resaltará sintaxis.

El código para el ayudante:

 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)); } }
over 4 years ago · Santiago Trujillo Report

0

Resolví este problema creando un control de servidor personalizado simple (para la aplicación ASP.NET 4 WebForms):

 [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(); } }

y coloque cada plantilla de jquery dentro (en lugar de la etiqueta <script> ):

 <some:JqueryTemplate runat="server" ID="myTemplateId"> ... your template code goes here ... </some:JqueryTemplate>

lo representará en HTML como:

 <script type="text/x-jquery-tmpl" id="myTemplateId"> ... your template code goes here ... </script>
over 4 years ago · Santiago Trujillo Report

0

No creo que pueda, a menos que engañe al editor para que no sepa que está escribiendo una etiqueta de secuencia de comandos, como escribirla en código (asistente HTML más o menos). Lo solucionaría cambiando el nombre de la etiqueta (o comentándolo) temporalmente y recuperándolo una vez que haya terminado. Seguro que es una solución tonta.

Otra cosa que puede hacer es en lugar de usar una etiqueta de secuencia de script , use cualquier otra etiqueta como div configurando su style para display:none . Debería funcionar exactamente de la misma manera (ejemplo en medio de este artículo ).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!