Pergunta

Eu tenho um UserControl com algumas propriedades booleanas nele. Eu gostaria que eles ser definido como true por padrão se não definir explicitamente na página .aspx, ou pelo menos os obriguem a ser declarada se não há nenhuma maneira para definir um padrão. Eu sei que há uma maneira de fazer isso porque muitos controles têm exigido propriedades que quebram seu aplicativo quando você tentar executá-lo e eles não estão declarados.

Como posso fazer isso?

Exemplo:

<je:myControl runat="server" id="myControl" showBox="False">

Eu quero o sistema a qualquer quebra ou definir o padrão para "true" se Showbox é deixado de fora desta declaração.

Obrigado!

Foi útil?

Solução

Defina suas propriedades com seus valores padrão assim:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
}

ou no construtor do seu controle, valores conjunto padrão:

public MyControl()
{
    _ShowBox = false;
}

ou exceção lance se não for atribuído:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
    get { return _ShowBox; }
}

Outras dicas

Eu sei que estou atrasado, mas eu só queria dizer que

[DefaultValue(false)]

não irá definir o atributo para false. Veja: http://msdn.microsoft.com/en-us /library/system.componentmodel.defaultvalueattribute.aspx . Ele diz:

"A DefaultValueAttribute não irá causar um membro para ser inicializado automaticamente com o valor do atributo. Você deve definir o valor inicial em seu código."

Este atributo é apenas para indicar no Visual Studio Designer que você considera ser um valor padrão. Se alguém utilizar seu controle muda esse valor, ele será exibido negrito para sinalizar que este valor é não-padrão.

Apenas definir o valor padrão desejado, quando declarar uma variável:

class myControl
{
    private bool _showBox = true;

    [PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)]
    public bool showBox
    {
        get { return _showBox; }
        set { _showBox = value; }
    }
}

Opcional você pode adicionar o DefaultValueAttribute para o designer.

ReSharper recomenda o uso de um auto-propriedade, e definindo o valor padrão no construtor, assim:

public class MyControl
{
  public MyControl()
  {
    ShowBox = true;
  }

  public bool ShowBox { get; set; }
}  
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top