working variable section scripts pass not net mvc from asp javascript jquery asp.net .net resources

javascript - variable - render partial view mvc 5 ajax



jQuery & ASP.Net Resources & Gotchas (3)

¿Cuáles son algunos buenos recursos de jQuery junto con algunos errores al usarlos con ASP.Net?


Los identificadores autogenerados de ASP.Net hacen que usar la sintaxis del selector de jQuery sea algo difícil.

Dos formas sencillas alrededor de este problema:

  • Buscar objetos usando la clase css en lugar de id
  • Puede eliminar la basura uniqueid con: $(''[id$=myid]'')

Una cosa a tener en cuenta es que si utiliza WebMethods para Ajax, los valores de respuesta se devolverán envueltos en un objeto llamado ''d'' por razones de seguridad. Tendrá que desenvolver ese valor, que generalmente no es un problema, a menos que esté usando un componente (como el plugin jqGrid) que se basa en jquery ajax. Para evitar eso, simplemente cambié el código en la grilla que llamaba ajax e insertaba un poco de código para desenvolver. Planeo enviar un código al equipo de jquery para ver si puede ser aceptado para futuras versiones.

El siguiente paso, como se mencionó anteriormente, son los IDS. Si tiene el tiempo y la inclinación, de hecho subclasé todos los controles HTML para hacer que participar en el NamingContainer sea opcional, así:

protected override void RenderAttributes(HtmlTextWriter writer) { HtmlControlImpl.RenderAttributes(this, writer); }

Y luego el objeto auxiliar (para evitar escribir el mismo código en cada objeto) se ve así:

public static void RenderAttributes(IFormControl cntrl, HtmlTextWriter writer) { if (cntrl.ID != null) { cntrl.Attributes.Remove("id"); cntrl.Attributes.Remove("name"); writer.WriteAttribute("id", cntrl.RenderedId); writer.WriteAttribute("name", cntrl.RenderedName); } cntrl.Attributes.Render(writer); HtmlContainerControl containerCntrl = cntrl as HtmlContainerControl; if (containerCntrl == null) writer.Write(" /"); } public static string GetRenderedId(IFormControl cntrl) { return cntrl.UseNamingContainer ? cntrl.ClientID : cntrl.ID; } public static string GetRenderedName(IFormControl cntrl) { return cntrl.UseNamingContainer ? cntrl.UniqueID : cntrl.ID; }