jQuery を asp.net webfoms で使用したいと考えています。.net コントロールがわかりやすいコントロール ID を吐き出すように、特別なツールキットを入手する必要がありますか?
理由は、control_123_asdfcontrol_234 のような自分の html ID を参照する JavaScript を書きたくないからです。
これはバージョン 3.5 で対処されましたか? (IDを使いやすくする特別なdllを取得する必要があることを読んだことを覚えています)。
jQuery を asp.net webfoms で使用したいと考えています。.net コントロールがわかりやすいコントロール ID を吐き出すように、特別なツールキットを入手する必要がありますか?
理由は、control_123_asdfcontrol_234 のような自分の html ID を参照する JavaScript を書きたくないからです。
これはバージョン 3.5 で対処されましたか? (IDを使いやすくする特別なdllを取得する必要があることを読んだことを覚えています)。
私が見つけた最も簡単な方法は、ほとんどのコントロールのマングル ID の末尾を照合することです。知っている例外は、ラジオボタン リストとチェックボックス リストです。これらについては、少し工夫する必要があります。
ただし、.aspx ページにこれがある場合:
<asp:TextBox ID="txtExample" runat="server" />
次に、次のように、マスター ページのレンダリングによって破損した場合でも、jQuery はそのコントロールを簡単に見つけることができます。
$("[id$=txtExample]")
演算子は文字列の$=
末尾に一致し、マングリング名は常に先頭にあります。それが完了したら、次のように実際のマングル ID を取得できます。
$("[id$=txtExample]").attr("id")
とにかくそれを解析してください。
編集: これは簡単な方法ですが、各コントロールに古い ID と同じクラスを与えるよりもパフォーマンスが低下する可能性があります。
Jeff が別の jQuery 最適化に関する質問へのリンクを投稿したこの記事を参照してください。
myControlId = "<%= myControl.ClientID %>";
Javascriptで参照するために使用される(非友好的な)IDを出力するために使用できます。
jQuery で要素を選択する方法はたくさんあります。タグ/クラス名を慎重に選択できます。
ASP.NET 4.0 まで、ID 自体をいじる方法を知りません。もちろん、いつでもASP.NET MVC フレームワークを試すことができます。
その新しい「特別なdll」については聞いたことがありませんが、あなたが話している簡単な方法の1つは、
var myControlId;
別の js ファイルで、クライアント ID を aspx/ascx のその var に割り当てます。
私もサーバーIDが嫌いです... ASP.NET MVCは、asp.net Webフォーム(Viewstateなど)で私を悩ませているすべてのものに対するソリューションです。
拡張クラスのコントロールのUniqueNameおよび/またはClientIDプロパティをオーバーライドして、実際のIDを返すこともできます。
MyTextBox : Web.UI.TextBox
{
// This modifies the generated 'name' attribute
override UniqueID { get { return ID; } }
// This modifies the generated 'id' attribute
override ClientID { get{ return ID; } }
}
コントロールに一意の属性をアタッチし (ベース Web コントロールを拡張せずにこれを行うことができるかどうかはわかりません。クイック検索でこれだけが明らかになりました)、「要素[属性:値]」セレクターを使用します。
試してみてください$get('myId')
。これは、非 HTML ドキュメントで要素を選択する方法だと思います。