ControltoValidate必需字段验证器的属性

时间:2015-05-21 22:11:22

标签: c# asp.net requiredfieldvalidator

我有一个名为DynamicGenericControl的用户控件。它实际上从它获得的属性生成文本框,下拉列表等,并将它们作为控件添加到页面。 例如

<uicontrol displayname="Manufacturer_Full Mfr Item #" datatype="DynamicGenericControl" colNumber="2" initRowNumber="1" isrequired="true"  key="Vendor Name_Vendor Part Number" controltwotype="TextBox_TextBox" respondtoclick="true"></uicontrol>

在上面的示例中,我的用户控件生成两个文本框,因为我们有两列指定为property。 现在,我想为这两个字段添加isquiredfield验证器。我尝试添加它并导致以下异常。

System.Web.HttpException: Control 'Vendor_Name_Vendor_Part_Number' referenced by the ControlToValidate property of '' cannot be validated.

我刚用_替换空格。不过我也没试过。没有用。 如果我们观察到异常,那么“控制验证属性”就是欺骗我的原因。是不是我的Validator没有被添加,或者它无法找到我的ID?

这是我抛出此异常的代码。

private static void AddRequiredValidator(Panel panel, UIControl uicontrol, Control control, TableRow tr)
    {
        TableCell validatorCell = new TableCell();
        validatorCell.Width = Unit.Point(4);
        if (uicontrol.IsRequired)
        {

            RequiredFieldValidator reqfield = new RequiredFieldValidator();
            reqfield.ControlToValidate = control.ID;

            reqfield.ErrorMessage = uicontrol.DisplayName + " is required.";
            reqfield.Text = "  !";
            reqfield.ForeColor = Color.Red;
            reqfield.Enabled = true;
            reqfield.Style.Add("vertical-align", "top");
            validatorCell.Controls.Add(reqfield);
        }
        tr.Controls.Add(validatorCell);

我已编辑过包含整个方法......

以下是我从方法AddRequiredValidator(panel, control, ddl, tr);调用的方式 其中panel是Panel类型,控件是UIControl,ddl是实际的dropdown或textbox控件,tr代表table row。

因为我错过了早先的完整代码。

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是您尝试将验证程序添加到常规Control对象,但是您can only add them to controls that take user input - 即TextBoxDropdown等等:

  

并非所有Web服务器控件都支持验证控件。可以使用验证控件验证的标准控件是:

     
      
  • System.Web.UI.WebControls.DropDownList
  •   
  • System.Web.UI.WebControls.FileUpload
  •   
  • System.Web.UI.WebControls.ListBox
  •   
  • System.Web.UI.WebControls.RadioButtonList
  •   
  • System.Web.UI.WebControls.TextBox
  •   
  • System.Web.UI.HtmlControls.HtmlInputFile
  •   
  • System.Web.UI.HtmlControls.HtmlInputPassword
  •   
  • System.Web.UI.HtmlControls.HtmlInputText
  •   
  • System.Web.UI.HtmlControls.HtmlSelect
  •   
  • System.Web.UI.HtmlControls.HtmlTextArea
  •   
     

要验证输入控件,必须将System.Web.UI.ValidationPropertyAttribute属性应用于控件。

因此,您需要将control参数转换为适当的类型以对其应用验证。

您的错误消息令人困惑的原因是您没有向您的验证控件提供ID,因此该消息没有值显示给您。