top of page
執筆者の写真Kawahara

マスターページとクライアントIDの関係

Visual Studio 2005のマスターページとはいわゆるテンプレートでその中にコンテンツを記入するだけで、サイト全体のアクセス方法やデザインを統一する事ができる。 しかも、SiteMapPathやSiteMapコントロールと組み合わせるとかなり省力化が図れる。

が、各オブジェクトにアクセスする方法がサーバー(C#,VB.NET)とクライアント(JavaScript)で異なる。 どうも、マスターページ内に複数のコンテンツホルダ(CH)が存在する場合にオブジェクトが複数存在する可能性が発生する為、オブジェクトのIDにCHのIDを付与する=クライアントでのIDが変わるという事らしい。

つまり、

efault.aspxで日付を設定する際には日付選択用のdate.aspxを選択して、 default.aspxのTextbox1へ設定する。

という処理が

【ASP.NET】 <img src=”button.gif” onClick=”JavaScript:Test(‘Textbox1’)”>

【ASP.NET2.0】 <img src=”button.gif” onClick=”JavaScript:Test(‘[サーバーによっ自動生成]_Textbox1’)” />

となり、固定値は保障されない(ClientID)。よってサーバー上でオブジェクトのClientIDを使って 上記のJavaScriptを出力しなければならない。よって

・クライアント側 <ASP:ImageButton ID=”ImagaButton1″ runat=”server” ImageUrl=”button.gif” />

・サーバー側 ImageButton1.OnClientClick = String.Format(“JavaScript:Test(‘{0}’)”,Textbox1.ClientID);

としなくてはならない。orz

閲覧数:7回0件のコメント

最新記事

すべて表示

Visual WebGui販売終了

GrapeCityが販売していたVisual WebGuiが2014年10月22日で販売終了との事。価格は高いが、便利なんだろうなと気になっていた製品だった。 2013年の6月から1年半弱で販売終了となったのに気付いた時は、「買わなくてよかった」と「こんなことあるの?」とい...

C#でのクラスライブラリの設計

C#でクラスライブラリを使用すると複数のプロジェクトで使用できて便利。しかし、どんな単位でクラスライブラリを分割するか悩みながらも下記のように考えていました。 外部コンポーネントの有無 DBの接続先 ODBCの設定要否 .NetframeWorkのバージョン...

Comments


bottom of page