Domanda

Quali sono alcune buone risorse jQuery insieme ad alcuni gotcha quando lo si utilizza con ASP.Net?

È stato utile?

Soluzione

Una cosa da notare è che se usi WebMethods per Ajax, i valori di risposta verranno restituiti racchiusi in un oggetto chiamato 'd' per motivi di sicurezza. Dovrai scartare quel valore, che di solito non è un problema, a meno che tu non stia usando un componente (come il plugin jqGrid) che si basa su jquery ajax. Per ovviare a questo, ho appena cambiato il codice nella griglia che chiamava Ajax e ho inserito un po 'di codice da scartare. Intendo inviare un codice all'equipaggio di jquery per vedere se può essere accettato per le versioni future.

La prossima cosa, come menzionato in precedenza, sono gli ID. Se hai il tempo e l'inclinazione, ho effettivamente sottoclassato tutti i controlli HTML per rendere facoltativa la partecipazione a NamingContainer, in questo modo:

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

E quindi l'oggetto helper (per evitare di scrivere lo stesso codice in ogni oggetto) appare così:

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;
}

Altri suggerimenti

L'ID generato automaticamente da ASP.Net rende in qualche modo difficile l'utilizzo della sintassi del selettore di jQuery.

Due semplici modi per aggirare questo problema:

  • Cerca oggetti usando la classe css anziché id
  • Puoi eliminare la spazzatura uniqueid con: $('[id$=myid[')

Blog di Rick Strahl è un buon punto di partenza. Ha parecchi post su jQuery.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top