2016-11-12 1 views
0

J'ai une question et je ne trouve pas les bons termes pour faire une recherche raisonnée et résoudre la question. Voyons voir, quand je crée une page, à un moment je dois créer un WebUserControl et reporter quelque chose comme state = "true" (comme le texte des étiquettes) à l'intérieur de la balise html de sorte que dès que la page se charge, si ce contrôle est modifié ou non dans le code.Propriétés de Webusercontrols

<MyControls:Teste Id="aaa" runat="server" state="false"/> 

Le code de commande de test est la suivante: (La page HTML de ce contrôle est vide, il n'a que l'en-tête)

public partial class WebUserControls_WUC_Tect : System.Web.UI.UserControl 
{ 
    private static bool state ; 
    public bool State 
    { 
     get { return state ; } 
     set { state = value; } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

Problème:

Chaque fois que la page revient à la serveur et est rechargé, la variable d'état est toujours définie sur false ou true en fonction de l'état initial que j'ai passé, ce que je voulais que cette variable soit chargée une seule fois au début de la page et ne puisse être modifié que par codebeind.

Je vous suis reconnaissant pour vos suggestions.

salutations Patrick Veiga

Répondre

0

Vous devez utiliser le ViewState pour stocker la valeur de la propriété de conserver la valeur persistante enregistrée.

public partial class WebUserControls_WUC_Tect : System.Web.UI.UserControl 
{ 
    private static bool state ; 
    public bool State 
    { 
     get 
     { 
     if (ViewState["MyState"] == null) 
     { 
      ViewState["MyState"] = false; 
     } 
     return (bool)ViewState["MyState"]; 
     } 
     set 
     { 
     ViewState["MyState"] = value; 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
}