Estoy intentando utilizar el validador de campo obligatorio en el archivo de código subyacente, pero es el que muestra el siguiente error.

De Error:

Unable to find control id 'TextBox1' referenced by the 'ControlToValidate' property of 'abcd854'

Nota : TextBox1 existe en la página. lo he probado.

Validador de Campo obligatorio en el código detrás de C#

Página Aspx

  <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

    <p>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="save" />       
    </p>
    <p>
        &nbsp;<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
</asp:Content>

Cs Archivo

   public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //RequiredFieldValidator validator = ControlsValidation.AssignRequiredFieldValidatorToControl(TextBox1, "Field is required", "*", "save");
            //validator.ControlToValidate = ((TextBox)this.Form.FindControl("MainContent").FindControl("TextBox1")).ID;


            RequiredFieldValidator validator = new RequiredFieldValidator();
            validator.ID = "abcd" + new Random().Next(100, 1000);
            validator.ControlToValidate = ((TextBox)this.Form.FindControl("MainContent").FindControl("TextBox1")).ID;
            validator.EnableClientScript = true;
            validator.ErrorMessage = "";
            validator.Text = "*";
            validator.ValidationGroup = "save";
            validator.Display = ValidatorDisplay.Dynamic;

            this.Controls.Add(validator);
        }
    }
  • Intente ajustar el cuadro de texto id de modo estático
  • no trabajo . duro suerte
  • quitar la parte de IDENTIFICACIÓN cuando usted encuentra el control de ((TextBox)este.El formulario.FindControl(«MainContent»).FindControl(«TextBox1»));

4 Comentarios

  1. 5

    Finalmente me dieron la solución. Problema fue

     this.Controls.Add(validator);

    Como todos podemos ver que el textbox está en la página del niño significa » Content Page» así que cuando se utiliza la línea de código anterior sus agregue el control en la página maestra en la que no hay ningún control con el id «TextBox1«.

    así que después de cambiar la línea de código anterior con :

    this.Form.FindControl("MainContent").Controls.Add(validator);

    su trabajo a la perfección.

    Gracias

  2. 2

    En asp.net después de la representación de su página de cuadro de texto id de la cambiarse(ver código fuente en el navegador). usted puede cambiar el id de cliente de modo estático, de forma que no cambie.

    Add ClientIDMode="Static" en el cuadro de texto

    <asp:TextBox ID="TextBox1" runat="server" ClientIDMode="Static"></asp:TextBox> 
  3. 1

    Probar Esto…

    Código detrás de

    oTexbox1.Attributes["required"] = "true";
    • Esto funciona, pero cómo agregar el mensaje de error y cualquier otra propiedad como añadir css, etc?
  4. -2

    Trate de usar ClientID en lugar de ID

    RequiredFieldValidator validator = new RequiredFieldValidator();
    validator.ID = "abcd" + new Random().Next(100, 1000);
    
    validator.ControlToValidate = ((TextBox)this.Form
                 .FindControl("MainContent").FindControl("TextBox1")).ClientID;
    
    validator.EnableClientScript = true;
    validator.ErrorMessage = "";
    validator.Text = "*";
    validator.ValidationGroup = "save";
    validator.Display = ValidatorDisplay.Dynamic;
    
    this.Controls.Add(validator);

Dejar respuesta

Please enter your comment!
Please enter your name here