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 回答
1

您可以通过以下方式获得它:

hiddenControlValue = HttpContext.Current.Request["hiddenControlId"]

或者您可以将您的页面传递给属于 App_Config 下您的类的方法,并以以下方式访问它:

public static string GetHiddenValue(Page currentPage)
{
        return currentPage.Request["hiddenValue"];
}

或者你可以通过上下文得到它:

public static string GetHiddenValue()
{
        return HttpContext.Current.Request["hiddenValue"];
}

希望这可以帮助。

于 2009-02-27T06:12:47.700 回答
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 回答