2012-04-03 8 views
0

は、私は私がそれを試してみましたwebusercontrol.ascx
からマスターページにdiv要素を見つける必要がある:ascxからマスターのdivを見つけるには?

HtmlGenericControl Mydiv =(HtmlGenericControl)Page.Master.FindControl( "dvAlert");

しかし、これは機能しません。

答えて

4

divをサーバーで実行するようにします。

マスターページでそのコントロールを公開するpublic readonlyプロパティYourPropertyを作成します。

Page.Master.YourProperty 

EDIT::OPはそれをjQueryを使って、クライアント側を見つけたいというように見えます

コントロールは、このようなあなたのASCXを形成ACCES。だから、彼は多くの選択肢を持っています。

彼のコメントによると、彼はスクリプトフォームのサーバー側を注入することができます。だから彼は信頼できるセレクターが必要です。彼はそれを得るいくつかの選択肢を持っています:

1)コントロールrunat = "server"を作成せず、<div id="FixedUniqueId"...で繰り返されない固定IDを与えます。このセレクタを使用してください:$('#FixedUniqueId')

2)サーバーでconrolを実行し、ClientIdを使用します。 IDのノウハウの一部(IDの末尾)を使用し、それはjqueryの$("element[id$='dvAlert']")

を使用して見つけるしかし、OPは本当にアラートを見せたいと、それははるかに良いです)この"$('#" + Page.Master.YourProperty.ClientId +"')"

3のようなjQueryのセレクタを構築idのオプション1)を使用して、divの内容を更新するクライアント側のjavascript関数をマスターページに作成します。そして、代わりにスクリプトが必要とされているスクリプトを注入する注入スクリプトはその関数への呼び出しに低減することができる。

function showAlert(message) { 
    $('#FixedUniqueId').text(message); 
    } 

そして、注入されたスクリプトは、showAlert("message")への呼び出しのように単純であってもよいです。このようにして、彼はスクリプトとページデザインをいつでも変更することができ(アラートを表示する方法)、UCの機能を損なうことなくMasterPage上の機能を変更することができます。

+0

+1 - これは自分自身を使用します。 – SkonJeet

+0

ありがとう、しかし私はJqueryと考えました Page.ClientScript.RegisterStartupScript(GetType()、 "Load"、 "" ); – wsoza

+0

編集した答えを見てください。 – JotaBe

関連する問題