【问题标题】:Get MasterPage Hiddenfield Value From a User Class从用户类获取 MasterPage Hiddenfield 值
【发布时间】:2009-02-27 05:44:53
【问题描述】:

有没有办法从我创建并放置在我的 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。

【问题讨论】:

    标签: asp.net master app-code


    【解决方案1】:

    这样的东西有用吗?

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

    【讨论】:

    • 给我一个错误“控件是一种类型,不能用作表达式。
    【解决方案2】:

    你可以通过这些获得它:

    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"];
    }
    

    希望这会有所帮助。

    【讨论】:

    • 我不确定我是否理解正确,但正如我所提到的,我需要从我在 app_code 文件夹中创建的类中获取母版页中隐藏字段的值。如何从我定义的类访问母版页?
    • 如果您的隐藏字段有 ID,所有这些代码都会在回发后返回您隐藏字段的值。您不需要访问母版页。 masterpage 只是您的页面类的基本页面。只需尝试其中之一,您就会看到。但是你可以在回发之后得到。
    【解决方案3】:

    编辑:我在回答后重新阅读了这个问题,并意识到我的回答可能不是你想要的。 :/

    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;
    

    抱歉,如果答案有点混乱。当然,如果您想使用 VB have a look at this link 来实现相同的想法,那么在 C# 中如何做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      相关资源
      最近更新 更多