Получение значения скрытого поля MasterPage от класса пользователя

Есть ли способ получить значение, которое я храню в скрытом поле главной страницы из класса пользователя, который я создал и поместил в папку App_Code моего приложения ASP.Net 2.0?

Некоторые примеры желательно в 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, которое мне нужно для получения значения.

Ответов (3)

Решение

Хотелось бы, чтобы это сработало?

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

РЕДАКТИРОВАТЬ: Я перечитал вопрос после ответа и понял, что мой ответ, вероятно, был не совсем тем, что вам было нужно. : /

Код Джареда может работать, но вы также можете попробовать следующее.

В 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 , посмотрите эту ссылку для той же идеи.

Вы можете получить это по этим:

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

надеюсь это поможет.