2009-03-31 23 views
3

.Netは、自分のページに要素IDを追加することで親切に要素IDを変更しています。私が自分のサイトにIDを複製するのを手伝ってくれるように助けようとしているMicrosoftに感謝している限り、私は自分でそれを管理できると思う。誰も私にこれを防ぐ方法を教えてもらえますか? ありがとうございます。.Net要素IDを変更します。

+0

あなたは以下の回答からわかるように、それを行うための良い方法はありません。そして、あなたが1つを見つけたら、あなたは基本的に.Netの方法のすべてのステップと戦っていることを覚えておいてください。それは後に他の問題を引き起こすかもしれません。なぜあなたはこれをしたいのですか? –

+0

私はあなたが言っていることを知っています。あなたの開発の側面を制御するために戦わなければならないのはイライラしなければなりません。 – Praesagus

答えて

1

あなたがする必要があります。私たちは、IDの生成がどのように行われるかと見つける方法を制御することができるように、コンテナコントロールの名前付けControl.IDプロパティ
オーバーライドからControl.UniqueIDプロパティを切り離す
オーバーライド通常のコントロールの動作を制御

参考文献:
http://nunogomes.net/post/2008/06/02/ASPNET-Controls-Improving-automatic-ID-generation-Architectural-Changes-(-Part-3).aspx


http://weblogs.asp.net/nunogomes/archive/2008/06/04/asp-net-controls-improving-automatic-id-generation-architectural-changes-part-3.aspx


http://forums.asp.net/t/1394822.aspx


+2

ここでは、かすかな心のための解決策はありません。私はそれが好きです! – Praesagus

4

これはaspnetの動作方法です。コントロールは、この理由のためにコードの背後で使用するためのclientidメソッドを提供します。

jsのオブジェクトを参照する場合は、clientidを挿入するか、クラスまたは他の属性を使用できます。


編集:これが唯一のASP.NETコントロールに適用されること注意。 HTMLコントロールを使用する場合、指定されたIDは保持されます。あなたのコードの後ろにrunat=server属性を追加することでそれらにアクセスすることもできます。明らかに、これらのコントロールはviewstateなどでwebformsモデルを破壊しますが、それらはあなたに望ましい機能を与えます。

もちろん私は心配してから間違っているかもしれません...(もし私がいればコメントしてください)!

+0

質問の要素の1つは、実際には、htmlで指定されたidを持つhtmlcontrolです。それにもかかわらず.netまだ私の指定されたIDを変更します。 – Praesagus

+0

おかげで、ありがとうございます –

1

サーバー側では何も使用しないでください。

これはASP.NETシステムの固有の側面であり、.NET Serverコントロールを使用する方法はなく、接頭辞を付加していません。

クライアント側の名前にアクセスするには、myControl.ClientIDプロパティを使用します。

2

INamingContainerインターフェイスを持つコントロールでは、コントロールの階層が追加され、複数のコントロールがページ上に矛盾することなく配置されます。クライアントの要素のIDを知りたい場合は、コントロールのClientIDプロパティを使用する必要があります。

関連する問題