ASP.Netで使用する場合のいくつかの良いjQueryリソースといくつかの落とし穴は何ですか?
3 に答える
ASP.Net の自動生成された ID は、jQuery のセレクター構文を使用して作成するのがやや困難です。
この問題を回避する 2 つの簡単な方法:
- ID の代わりに CSS クラスを使用してオブジェクトを検索する
- 次の方法で、uniqueid ガベージを取り除くことができます。
$('[id$=myid]')
注意すべきことの 1 つは、Ajax に WebMethods を使用する場合、セキュリティ上の理由から、応答値が「d」という名前のオブジェクトにラップされて返されることです。その値をアンラップする必要がありますが、jquery ajax に依存するコンポーネント (jqGrid プラグインなど) を使用していない限り、通常は問題ありません。これを回避するために、ajax を呼び出すグリッド内のコードを変更し、アンラップするコードを少し挿入しました。将来のバージョンで受け入れられるかどうかを確認するために、いくつかのコードを jquery クルーに送信する予定です。
前述したように、次は ID です。時間と気力があれば、実際にすべての HTML コントロールをサブクラス化して、NamingContainer への参加をオプションにしました。次のようにします。
protected override void RenderAttributes(HtmlTextWriter writer) {
HtmlControlImpl.RenderAttributes(this, writer);
}
次に、ヘルパー オブジェクト (各オブジェクトに同じコードを記述しないようにするため) は次のようになります。
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;
}
RickStrahlのブログから始めるのが良いでしょう。彼にはかなりの数のjQuery投稿があります。