从用户类获取母版页隐藏字段值

时间:2009-02-27 05:44:53

标签: asp.net master app-code

有没有办法从我创建并放在ASP.Net 2.0应用程序的App_Code文件夹中的用户类中获取存储在Master Page隐藏字段中的值?

一些例子最好在VB.Net中受到高度赞赏。

感谢。

要提供更多详细信息,请假设以下内容:

MasterPage.Master MasterPage.Master.vb

MyPage.aspx Mypage.aspx.vb

在app_code文件夹中,添加一个新类,比如TESTClass。

我在母版页中放了一些逻辑。 MyPage.aspx使用Masterpage.master作为其母版页。在母版页中,我所做的逻辑将值存储到隐藏字段中。

在我的TestClass中,如何访问母版页隐藏字段?

请注意,TestClass不是用户控件,而是用户定义的类,其中包含一些可由myPage.aspx.vb访问的特定于业务的逻辑。

我尝试了ScarletGarden的建议,但它似乎没有获得我需要获得价值的Masterpage Hiddenfield。

3 个答案:

答案 0 :(得分:4)

这样的事情会起作用吗?

((HiddenField)this.Page.Master.FindControl("[hidden control id]")).Text

答案 1 :(得分: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"];
}

希望这会有所帮助。

答案 2 :(得分: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 have a look at this link来实现同样的想法。