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
Comments