В конструкторе веб-элемента управления устанавливается только свойство? - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть WebControl, и у него есть свойство. Однако значение этого свойства не должно изменяться после создания элемента управления ... другими словами, свойство может быть установлено только в некотором коде, например:

<ct:Acontrol ID="xxx" Aproperty="xxx"  runat="server"></ct:Acontrol>

но не:

xxx.Aproperty=...

так каков нормальный способ сделать это? Спасибо!

Ответы [ 4 ]

0 голосов
/ 03 ноября 2011

Возможно, свойство использует комбинацию атрибутов EditorBrowsable и DesignerSerializationVisibility:

[EditorBrowsable(EditorBrowsableState.Never)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string SomeProperty { get; set; }

Атрибут DesignerSerializationVisibility показывает свойство в разметке, а атрибут EditorBrowsable скрывает свойствов коде позади.

0 голосов
/ 03 ноября 2011

Вы должны быть в состоянии использовать

xxx.Attributes("Aproperty")
0 голосов
/ 03 ноября 2011

Все атрибуты разметки ASP.NET устанавливаются как свойства после выполнения конструктора.Вы можете выбрать определенные свойства только для чтения, которые будут установлены только в конструкторе, используя подклассы элемента управления.

<!-- Aproperty=xxx -->
<ct:Acontrolxxx ID="xxx" runat="server"></ct:Acontrolyyy> 

<!-- Aproperty=yyy -->
<ct:Acontrolyyy ID="yyy" runat="server"></ct:Acontrolxxx> 

public class Acontrolxxx : Acontrolbase 
 {  
       public Acontrolxxx () {  base.Aproperty = xxx; }
 }
0 голосов
/ 03 ноября 2011

Свойства, которые вы используете в разметке, должны быть общедоступными свойствами с установщиком общего доступа и . Не существует специального синтаксиса для «установить только один раз».

То, что вы можете сделать - это проверить в установщике, было ли оно уже установлено и, если да, не установить новое значение.

private string _aProperty;

public string Aproperty
{
    get { return _aProperty;}
    set
    {
       if(_aProperty == null)
       {
          _aProperty = value;
       }
    }
}
...