validator net ejemplos custom asp c# asp.net validation customvalidator asp.net-validators

c# - net - custom validator angular 6



¿Cómo obtener la propiedad ''controlToValidate'' en ClientValidationFunction? (3)

En realidad, sender.controltovalidate proporciona el ClientID del control. Entonces esto parece una solución.

function ValidationFunction1(sender, args){ var v = document.getElementById(sender.controltovalidate); }

Lo intenté y funcionó para mí. Por favor notifique si funciona.

Digamos que tengo este código.

<asp:TextBox ID="TextBox1" runat="server" /> <asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidationFunction1" ControlToValidate="TextBox1" Display="Dynamic" />

Y una validationFunction:

function ValidationFunction1(sender, args) { }

Y me gustaría saber si, dentro de la función, podría obtener el Control para validar algo como:

var v = sender.ControlToValidate;


Esta es mi opinión sobre una solución del lado del servidor en C # para imitar la respuesta anterior, para cualquier persona interesada:

<asp:TextBox ID="txtStudentComments" runat="server" Rows="8" Width="100%" ToolbarCanCollapse="False" ValidationGroup="vg1" /> <asp:CustomValidator ID="cv1" runat="server" ControlToValidate="txtStudentComments" ErrorMessage="THESE COMMENTS DO NOT SEEM RIGHT. PLEASE REVIEW THEM AGAIN!" SetFocusOnError="true" Font-Bold="True" Font-Size="Medium" ValidationGroup="vg1" OnServerValidate="cv1_ServerValidate"></asp:CustomValidator>

Y en el servidor:

//validate of the comment contains some specific words which imply the TET has not reviewed the comments! protected void cv1_ServerValidate(object source, ServerValidateEventArgs args) { CustomValidator cv = (CustomValidator)source; GridViewRow gvRow = (GridViewRow)cv.NamingContainer; TextBox editor = (TextBox)gvRow.FindControl("txtStudentComments"); if (editor.Text.ToUpper().Contains("FACILITATOR TO INSERT COMMENTS HERE PLEASE")) args.IsValid = false; else args.IsValid = true; }

Estas dos líneas son el quid de la misma.

CustomValidator cv = (CustomValidator)source; GridViewRow gvRow = (GridViewRow)cv.NamingContainer;

El NamingContainer será un GridViewRow en mi caso, pero podría ser su página completa dependiendo de su programa. De cualquier manera, me permite encontrar el control que quiero, en relación con el objeto ControlToValidate, que, como se mencionó, devolverá el ClientID.


No verificado, solo una pista:

var v = document.getElementById(''<%=CustomValidator1.FindControl(CustomValidator1.ControlToValidate).ClientID>%'');

por supuesto que simplemente puedes hacerlo como:

var v = document.getElementById(''<%=TextBox1.ClientID%>'');

Si sabes exactamente lo que estás validando. El primer método es bueno cuando el control a validar se configura dinámicamente y no se sabe de antemano cuál será.

Además, FindControl() puede devolver un null por lo que también debería hacer una prueba para evitar una excepción.

Espero que esto ayude.