何时声明的值绑定到WebForms中的用户控件的属性?
我有一个用户控件,其公共属性是枚举类型。在我的aspx页面中,我以声明方式设置它的值。在ascx中,我使用<%= %>
语法将值输出到页面。 echo语法输出的值始终为零0
。 enum确实nopt的值为零。
因此,我的问题是,在声明的值绑定到属性之前评估了echo <%= %>
语法吗?
示例:
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" />
输出结果为:
<a href="foo.aspx?foo=0">Foo</a>
<a href="foo.aspx?foo=0">Foo</a>
<a href="foo.aspx?foo=0">Foo</a>
我将假设零是任何枚举成员的“未设置”值,因此假设在将值绑定到属性之前执行<%=
。
答案 0 :(得分:2)
零是默认值,是的,在声明设置之前评估usercontrol上的标记。您应该在page_init事件
上设置值