2010-12-10 6 views
3

マスターページからコンテンツページ(コンテンツプレースホルダー、マルチビューコントロールをより正確にする)にあるコントロールにアクセスできますか?ContentPageコントロール(mv) - >マスターページアクセス

状況は、私はマスターページにあるボタンを備えたメニューを持っています。

私のコンテンツページには、1つのコンテンツプレースホルダがあります。 複数のビューを持つマルチビューが配置されています。

メニュー(マスターページ)のボタンを押すと、適切な表示(コントロール付き)がコンテンツプレースホルダ領域に表示されます。

私はActieveViewIndex = 0を設定しましたが、すべての種類の欲求を得ています。 私はActiveViewIndex ++で何かをしなければなりませんが、何も動かないようです。

編集::

string a = Request.Querystring["one"] 
string b = Request.QueryString["two"] 
if (a == "addOne") // where addone is a redirection to the content page from the master page button 
{ 
    mvMultieView.SetActiveView(vView1); 
} 
else 
if (b == "addTwo") 
{ 
    mvMultieView.SetActiveView(vView2); 
} 

任意の提案ですか? こんにちは。

答えて

1

私のチームと私がこのタスクを達成した方法(そして私はそれが最善の方法であるとは分かりませんが効果的でした)は、質問文字列を使用することでした。問題のビューの名前を決定する標準のQS変数iViewを作成しました(必ずしもコントロール名そのものではなく、コンテンツコントロールが応答するいくつかのキーワード)。私たちのページ/コントロールはすべてページベースのクラスを継承しているので、基本クラスにメソッドを配置します(この場合はページレベルでしたが、コントロールレベルが機能するかもしれません)。要求されたビュー。コントロールには、activeViewを設定するメカニズム(おそらくスイッチ)があります。場合によっては、コントロールの実際のID(難読化するミステリーなので)を使用して、スイッチを完全に回避しました。

http://www.mydomain.com/mypage.com?iView=mySecondView 

partial class MyControl : System.Web.UI.WebControl 
{ 
    // blah blah control stuff 

    public string getRequestedView() 
    { 
     return (Request.QueryString["iView"]) ? Request.QueryString["iView"] : String.Empty; 
    } 
} 

... 

protected void Page_Load(object sender, EventArgs e) 
{ 
    View myView = myMultiView.FindControl(this.getRequestedView()); 
    if(myView != null) 
     this.MyView.SetActiveView(myView); 
} 
+0

応答のためのTy。しかし、私はすでに3つの文字列を要求しています.querystring - >ビューが来る3つの異なるページ。しかし、これをこの「iView」変数にリンクするにはどうすればよいですか?よろしく。 – Tonz

+0

@Tonz - ブラウザウィンドウごとに1ページだけを表示でき、マルチビューごとに1つのビューしか表示できないため、このiView変数はグローバル構造になります。 .Netのどのバージョンを使用していますか?私が話しているものの簡単なサンプルプロジェクトを模擬して投稿することができます。 –

+0

Cheer Joel !, asp 4.0。しかし、本当に最初のボタンだけがうまく機能し、2番目のボタンが空白のエリアを表示するだけです。最初からすべてのコードを開始した後でさえ。 – Tonz

2

あなたは簡単に見つけ制御

View myView = (View)this.Master.FindControl("PlaceHolderFullMain").FindControl("PlaceHolderMain").FindControl("Mymultiview") 
0

を使用すると、マスターページやコンテンツページでこの変更を行っていることを行うことができますか? 私も同じ問題を抱えています。

マスターページにコンテンツページのビューコントロールを有効にするためのリンクボタンがあります。 コンテンツページは現在読み込まれているページではありません。

この方法は私のソリューションに役立ちますか?

+0

あなたの投稿に[署名またはタグラインを使用しないでください](http://stackoverflow.com/faq#signatures)。 – meagar

関連する問題