Pregunta

Tengo un UserControl con algunas propiedades booleanas en él. Me gustaría que se configuren en verdadero de forma predeterminada si no se establece explícitamente en la página .aspx, o al menos obligarlos a ser declarados si no hay manera de establecer un valor predeterminado. Sé que hay una forma de hacerlo porque muchos controles tienen propiedades requeridas que rompen tu aplicación cuando intentas ejecutarla y no están declaradas.

¿Cómo hago esto?

Ejemplo:

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

Quiero que el sistema rompa o establezca el valor predeterminado en " true " si showBox queda fuera de esta declaración.

¡Gracias!

¿Fue útil?

Solución

Defina sus propiedades con sus valores predeterminados como ese:

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

o en el constructor de tu control, establece los valores predeterminados:

public MyControl()
{
    _ShowBox = false;
}

o lanzar una excepción si no está asignado:

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

Otros consejos

Sé que llego tarde pero solo quería mencionar eso

[DefaultValue(false)]

NO establecerá el atributo en falso. Consulte: http://msdn.microsoft.com/en-us /library/system.componentmodel.defaultvalueattribute.aspx . Dice:

" Un DefaultValueAttribute no hará que un miembro se inicialice automáticamente con el valor del atributo. Debe establecer el valor inicial en su código. & Quot;

Este atributo es solo para indicar en Visual Studio Designer lo que considera un valor predeterminado. Si alguien que usa su control cambia este valor, se mostrará en negrita para indicar que este valor no es el predeterminado.

Simplemente configure el valor predeterminado deseado, al declarar una variable:

class myControl
{
    private bool _showBox = true;

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

Opcional, puede agregar DefaultValueAttribute para el diseñador.

ReSharper recomienda usar una propiedad automática y establecer el valor predeterminado en el constructor, de este modo:

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

  public bool ShowBox { get; set; }
}  
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top