C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ContentPlaceHolder IDの取得


(過去ログ 81 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■47996 / inTopicNo.1)  ContentPlaceHolder IDの取得
  
□投稿者/ face (1回)-(2010/03/19(Fri) 09:55:47)

分類:[ASP.NET (C#)] 

マスタページについて質問させてください。
環境 ASP.NET[C#] VS2008 framework 3.5

マスタページを利用したwebシステムを作成しています。
マスタページを利用した場合コントロールのIDがデザイン時と実行時(javascript内)は異なると思います。
実際はデザイン時 コントロール名:aaaa
         ContentPlaceHolder:bbbb
javascript内は  tdl00_bbbb_aaaa (tdl00にコンテンツプレースフォルダが前についてコントロール名)
このようになると認識しています。
そこで、ContentPlaceHolderIDを取得することができれば、実行じでも共通的なコントロールID指定が可能になるとおもうのですが、
javascript内もしくはC#内でContentPlaceHolderIDを取得する方法はありますでしょうか?

できればjavascript内で取得できるほうが良いと思っています。
よろしくおねがいします。
引用返信 編集キー/
■48000 / inTopicNo.2)  Re[1]: ContentPlaceHolder IDの取得
□投稿者/ こくぶん (52回)-(2010/03/19(Fri) 10:39:26)
No47996 (face さん) に返信

C# コードからは ctrl.CliendID で実行時に付与される ID を取得できます。

JavaScript で使いたい場合は、スクリプトに C# コードを埋め込めば取得可能です。

function hoge() {
  var element = document.getElementById("<%= ctrl.ClientID %>");
  //...
}

# これだとスクリプトが分離コード化できないけど。。。


(余談)
ASP.NET 4.0 だと、 ID を Static に出来る様になるらしい……?
http://blog.osbornm.com/archive/2009/01/06/asp.net-4.0-clientid-overview-again.aspx

引用返信 編集キー/
■48004 / inTopicNo.3)  Re[2]: ContentPlaceHolder IDの取得
□投稿者/ face (3回)-(2010/03/19(Fri) 14:09:19)
こくぶんさんありがとうございます。
> function hoge() {
> var element = document.getElementById("<%= ctrl.ClientID %>");
> //...
> }
上記ctrl.ClientIDで指定した場合、ctrlの部分は固定IDになるとおもいます。
コントロールIDの付け方にルールを設けることで解決できそうですが、存在しないときはコンパイルエラーになりますよね?
スクリプト自体は共通ファイル(**.js)で管理したいと思います。
よって、C#内でClientIDを取得して変数を使って渡そうとこころみています。

この時、**.jsファイル内でC#の変数を参照できていないようなのですが、不可能なことなのでしょうか?
例えば 
C#
public static string ABC = ctrl.ClientID.Tostring();
**.js
document.getElementById("<%= ABC %>")

このようなことはできないでしょうか?という質問です。
よろしくおねがいします。
引用返信 編集キー/
■48005 / inTopicNo.4)  Re[3]: ContentPlaceHolder IDの取得
□投稿者/ こくぶん (53回)-(2010/03/19(Fri) 14:33:21)
No48004 (face さん) に返信

> この時、**.jsファイル内でC#の変数を参照できていないようなのですが、不可能なことなのでしょうか?

*.js は静的なファイルなので、 C# の変数は参照できないです。
(コードビハインドクラスとの紐付きが存在しません)

# なので「これだとスクリプトが分離コード化できないけど。。。」と書きました。


*js で利用するのであれば、 *.aspx.cs で Javascript のグローバル変数に格納してあげるなりして対応するしかないと思います。

引用返信 編集キー/
■48007 / inTopicNo.5)  Re[4]: ContentPlaceHolder IDの取得
□投稿者/ face (5回)-(2010/03/19(Fri) 17:17:33)
こくぶん様ありがとうございます。
結果を報告すると無事解決しました。

> *.js は静的なファイルなので、 C# の変数は参照できないです。
> (コードビハインドクラスとの紐付きが存在しません)
>
> # なので「これだとスクリプトが分離コード化できないけど。。。」と書きました。
>
>
> *js で利用するのであれば、 *.aspx.cs で Javascript のグローバル変数に格納してあげるなりして対応するしかないと思います。
>

上記件の対応としてはincludeを使うことでロジックは**.jsに記述することにしました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -