2009-02-27 47 views
0

有没有一种方法可以从我创建并放置在我的ASP.Net 2.0应用程序的App_Code文件夹中的用户类的主页隐藏字段中获取值?从用户类获取MasterPage Hiddenfield值

一些例子最好在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,我需要获取该值。

回答

4

会这样的工作?

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

给了我一个错误“控制是一种类型,不能用作表达式 – Batuta 2009-02-27 06:09:54

+0

对不起,错过了演员我编辑了我的答案以纠正 – Jared 2009-02-27 15:20:16

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

希望这有助于。

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来达到同样的想法。