Получить значение скрытого поля MasterPage из пользовательского класса - PullRequest
0 голосов
/ 27 февраля 2009

Есть ли способ получить значение, которое я храню в скрытом поле мастер-страницы, из пользовательского класса, который я создал и поместил в папку 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, но, похоже, он не получил скрытое поле мастер-страницы, которое мне нужно, чтобы получить значение.

Ответы [ 3 ]

4 голосов
/ 27 февраля 2009

Хотелось бы что-нибудь подобное?

((HiddenField)this.Page.Master.FindControl("[hidden control id]")).Text
1 голос
/ 27 февраля 2009

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

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

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

0 голосов
/ 27 февраля 2009

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

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

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

...