2009-02-27 7 views
0

Existe-t-il un moyen d'obtenir une valeur que je stocke dans un champ masqué d'une classe d'utilisateurs que j'ai créée et placée dans le dossier App_Code de mon application ASP.Net 2.0?Obtenir la valeur MasterPage Hiddenfield d'une classe d'utilisateurs

Certains exemples seraient de préférence très appréciés dans VB.Net.

Merci.

Pour donner plus de détails, supposons que les éléments suivants:

MasterPage.Master MasterPage.Master.vb

MyPage.aspx Mypage.aspx.vb

dans le dossier App_Code, ajoutez un nouvelle classe, dites TESTClass.

J'ai placé un peu de logique dans la page maître. MyPage.aspx utilise Masterpage.master comme page maître. Dans la page maître, la logique que j'ai utilisée stocke une valeur dans un champ caché.

Dans ma classe TestClass, comment accéder au champ masqué de la page principale?

Veuillez prendre note que TestClass n'est PAS un contrôle utilisateur mais une classe définie par l'utilisateur, qui contient une certaine logique métier à laquelle myPage.aspx.vb accède.

J'ai essayé la suggestion de ScarletGarden, mais elle n'a pas semblé obtenir la Masterpage Hiddenfield dont j'ai besoin pour obtenir la valeur.

Répondre

4

Un truc pareil devrait-il fonctionner?

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

Donne-moi une erreur «Le contrôle est un type et ne peut pas être utilisé comme une expression – Batuta

+0

désolé raté une fonte.J'ai édité ma réponse pour corriger – Jared

1

Vous pouvez l'obtenir par ces:

hiddenControlValue = HttpContext.Current.Request["hiddenControlId"] 

ou vous pouvez passer votre page à votre méthode qui appartient à votre classe sous App_Config, et d'atteindre comme:

public static string GetHiddenValue(Page currentPage) 
{ 
     return currentPage.Request["hiddenValue"]; 
} 

ou vous pouvez l'obtenir sur le contexte:

public static string GetHiddenValue() 
{ 
     return HttpContext.Current.Request["hiddenValue"]; 
} 

espérons que cela aide.

+0

Je ne suis pas sûr de vous comprendre correctement, mais comme je l'ai mentionné, J'ai besoin d'obtenir la valeur d'un champ caché dans une page maître d'une classe que j'ai créée dans le dossier app_code Comment puis-je accéder à la page maître de la classe que j'ai définie? – Batuta

+0

tous ces codes retourne la valeur de votre champ caché après une publication si votre champ masqué a un ID, vous n'avez pas besoin d'accéder à masterpage masterpage est simplement une page de base pour votre classe de page, essayez l'une d'entre elles, vous verrez, mais vous pouvez obtenir après la publication. – Canavar

0

EDIT: J'ai relu la question après avoir répondu, et j'ai réalisé que ma réponse n'était probablement pas ce que vous recherchiez. :/

Le code de Jared peut fonctionner, mais vous pouvez également essayer ce qui suit.

Dans votre MasterPage, définissez HiddenField comme propriété publique et stockez le contenu dans ViewState pour le conserver lors des publications.

Quelque chose comme ceci:

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

Vous devez alors ajouter ce qui suit à votre ASCX fichier:

<%@ Reference Control="~/Masterpages/Communication.Master" %> 

Vous accédez alors thusly.

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; 

Désolé, la réponse est un peu compliquée. C'est, bien sûr, comment le faire en C#, si vous voulez utiliser VB have a look at this link pour la même idée.

Questions connexes