有没有办法从我创建并放在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。
答案 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来实现同样的想法。