2010-10-29 6 views
2

Quand des valeurs déclarées sont-elles liées aux propriétés d'un contrôle utilisateur dans WebForms?Quand des valeurs déclarées sont-elles liées aux propriétés d'un contrôle utilisateur dans WebForms?

J'ai un contrôle utilisateur qui a une propriété publique qui est un type enum. Dans ma page aspx, je définis sa valeur de façon déclarative. Dans le ascx je suis en train de sortir la valeur de la page en utilisant la syntaxe <%= %>. La valeur qui est sortie par la syntaxe echo est toujours 0. L'énumération nopt a une valeur nulle.

Ma question est donc, est écho <%= %> syntaxe évaluée avant que la valeur déclarée est liée à la propriété?

Exemple:

public enum Foo 
{ 
    Bar = 1, 
    Bahh = 2, 
    BlackSheep = 3 
} 

// MyUserControl.cs 
public class MyUserControl : UserControl 
{ 
    public Foo Fizz { get; set; } 
} 

// MyUserControl.ascx 
<a href="foo.aspx?foo=<%= this.Fizz %>">Foo</a> 

// MyPage.aspx 
<foo:MyUserControl runat="server" ID="foo:MyUserControl1" Fizz="Bar" /> 
<foo:MyUserControl runat="server" ID="foo:MyUserControl2" Fizz="Bahh" /> 
<foo:MyUserControl runat="server" ID="foo:MyUserControl3" Fizz="BlackSheep" /> 

La sortie est:

<a href="foo.aspx?foo=0">Foo</a> 
<a href="foo.aspx?foo=0">Foo</a> 
<a href="foo.aspx?foo=0">Foo</a> 

Je vais supposer que zéro est la valeur « unset » pour tout membre de ENUM et donc supposer que <%= est exécutée avant la valeur est liée à la propriété.

Répondre

2

Zéro est la valeur par défaut et oui le balisage sur votre usercontrol est évalué avant le paramètre déclaratif. Vous devez définir la valeur sur l'événement page_init