- - PR -
[ASP.NET]ページ間ポストバックについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-02 15:37
はじめまして。VWDβ2で開発を行っています、hIzzIと申します。
よろしくお願いします。 現在、ButtonコントロールのPostBackUrlを利用して、ページ間ポストバックを行い、以下のように、ポストバック後のページでコントロールの値を取得しています。 (Labelコントロール(Label1)の値を取得する場合) Label l1 = (Label) Page.PreviousPage.FindControl["Label1"]); この方法で問題なくコントロールの値を取得できるのですが、ポストバック前のページにマスターページを利用していると、ポストバック時に「オブジェクト参照がオブジェクト インスタンスに設定されていません。」のエラーが出てしまい取得することが出来ません。 そこで、 foreach (Control a in (MasterPage)Page.PreviousPage.Controls) { Label1.Text += a.GetType().ToString() + ":" + a.ID + "<br />"; } として、PreviousPageのchild controlsを調べてみると 結果として ASP.MasterPage_master: が返ってきます。 即ち、マスターページだけがPreviousPageに含まれており、実際のページ(ポストバック前のページ)のコントロール群が取得できない状態になっていると考えられます。 ここまではわかったのですがここから先がどうにもなりません。 何か良いお知恵がありましたら、よろしくお願いいたします。 因みに現在は、 string st = Request.Params["ctl00$ContentPlaceHolder1$Label1"]; としてParamsCollectionを使って無理やり取得しています [ メッセージ編集済み 編集者: hIzzI 編集日時 2005-06-02 15:42 ] [ メッセージ編集済み 編集者: hIzzI 編集日時 2005-06-03 13:49 ] |
|
投稿日時: 2005-06-03 13:48
自己解決しました
Label l1 = (Label) Page.PreviousPage.FindControl("ctl00$ContentPlaceHolder1$Label1"); で取得することが出来ました。 もう少し、短くしてほしい。。。 この記述の仕方が、ASP.NET2.0での王道になるのかな?? あと、PreviousPageのchild controlsとして、ctl00$ContentPlaceHolder1$Label1が含まれていないのはどうしてなんでしょう?? [ メッセージ編集済み 編集者: hIzzI 編集日時 2005-06-03 13:53 ] |
1