2008-12-11 21 views
11

Tengo un control de usuario web ASP.Net que contiene un TextBox y un calendario del Ajax Control Toolkit.Web User Controls and Validation

Cuando incluyo este control de usuario en mi página, me gustaría que participara en la validación de entrada (hay un validador archivado requerido en el TextBox dentro de la UC), es decir. cuando se valida la página, el contenido de la UC también debe validarse. Así que hice que mi UC implementara la interfaz IValidator, que funcionó bien, excepto que no pude establecer el grupo de validación en el control del usuario. Aparentemente se supone que debo heredar de BaseValidator para hacer eso, pero no puedo porque ya estoy heredando UserControl.

Tiene que haber una manera de lidiar con este escenario común.

+0

Pedido: [? Cómo validar control de usuario] (http://izlooite.blogspot.com/2010/ 07/how-to-validate-user-control.html) –

Respuesta

10

Cree una propiedad en su nuevo control de usuario que establece el grupo de validación en el validador contenido. Luego, desde su marcado, todo lo que necesita hacer es establecer la propiedad ValidationGroup en el control, y eso se transferirá a los validadores contenidos en el control de usuario. Es probable que no necesite la interfaz ni que herede de BaseValidator a menos que esté creando SOLO un control de usuario de validación.

public string ValidationGroup 
{ 
    get 
    { 
     return MyRequiredFieldValidator.ValidationGroup; 
    } 
    set 
    { 
     MyRequiredFieldValidator.ValidationGroup = value; 
    } 
} 
3

Intente agregar [ValidationProperty("NameOfPropertyToBeValidated") en su clase de control de usuario.

0

Si está planeando agregar mucha validación en el futuro, vale la pena echarle un vistazo a Peter Blum's DES (Data Entry Suite) - tiene numerosos controles mejorados para la entrada y validación de datos que incluyen escenarios de validación condicional y el que usted están describiendo. La licencia es muy razonable en comparación con el tiempo requerido para desarrollarla usted mismo.

13

Puede hacer referencia a un control en un control de usuario mediante la separación de los dos con un signo de dólar:

<asp:RequiredFieldValidator ControlToValidate="MyUserControl$ControlId" runat="server" />