0

ASP.Net 2.0 アプリケーションの App_Code フォルダーに作成して配置したユーザー クラスから、マスター ページの非表示フィールドに格納している値を取得する方法はありますか?

いくつかの例は、できれば VB.Net にあると高く評価されています。

ありがとう。

詳細を説明するために、次のことを前提とします。

MasterPage.Master MasterPage.Master.vb

マイページ.aspx マイページ.aspx.vb

app_code フォルダーに、TESTClass などの新しいクラスを追加します。

マスターページにいくつかのロジックを配置しました。MyPage.aspx は、マスター ページとして Masterpage.master を使用します。マスター ページでは、私が行ったロジックによって値が隠しフィールドに格納されます。

TestClass で、マスター ページの非表示フィールドにアクセスするにはどうすればよいですか?

TestClass はユーザー コントロールではなく、myPage.aspx.vb によってアクセスされるビジネス固有のロジックを含むユーザー定義クラスであることに注意してください。

ScarletGarden の提案を試してみましたが、値を取得するために必要な Masterpage Hiddenfield を取得していないようです。

4

3 に答える 3

4

このようなものは機能しますか?

((HiddenField)this.Page.Master.FindControl("[hidden control id]")).Text
于 2009-02-27T05:51:11.963 に答える
0

編集:私は答えた後に質問を読み直しました、そして私の答えはおそらくあなたが求めていたものではなかったことに気づきました。:/

Jaredのコードは機能する可能性がありますが、次のことも試すことができます。

MasterPageで、HiddenFieldをパブリックプロパティにし、コンテンツをViewStateに保存して、ポストバック中に保持できるようにします。

そのようなもの:

public HiddenField theHiddenField
{
    get
    {
        if (ViewState["HiddenField"] == null)
            return null; //or something that makes you handle an unset ViewState
        else
            return ViewState["HiddenField"].ToString();
    }
    set
    {
        ViewState["HiddenField"] = value;
    }
}

次に、ASCXファイルに以下を追加する必要があります。

<%@ Reference Control="~/Masterpages/Communication.Master" %>

次に、このようにアクセスします。

Page mypage = (Page) this.Page; // Or instead of Page, use the page you're actually working with, like MyWebsite.Pages.PageWithUserControl
MasterPage mp = (MasterPage) mypage.Master;
HiddenField hf = mp.theHiddenField;

答えが少し乱雑になった場合は申し訳ありません。もちろん、これはC#でそれを行う方法です。VBを使用したい場合は、同じアイデアについてこのリンクを参照してください。

于 2009-02-27T15:41:33.293 に答える