2010-10-29 1 views
2

Когда объявляются значения, связанные с свойствами пользовательского элемента управления в WebForms?Когда объявляются значения, связанные с свойствами пользовательского элемента управления в WebForms?

У меня есть пользовательский элемент управления, который имеет общедоступное свойство, которое является типом перечисления. На моей странице aspx я определяю ее значение декларативно. В ascx я выводил значение на страницу с использованием <%= %> синтаксиса. Значение, которое выводится синтаксисом эха, всегда равно 0. Перечисление 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> 

Я буду считать, что нуль является «отключено» значение для любого члена перечня и, следовательно, предположить, что <%= выполняется до значение привязано к свойству.

ответ

2

Нулевое значение по умолчанию и да, разметка на вашем пользовательском контроле оценивается до декларативной настройки. Вы должны установить значение в событии page_init