必需字段验证器的ControltoValidate属性

本文关键字:ControltoValidate 属性 验证 字段 | 更新日期: 2023-09-27 17:50:17

我有一个名为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>

在上面的例子中,我的用户控件生成两个文本框,因为我们有两个列指定为属性。现在,我想为这两个字段添加arequiredfield验证器。我尝试添加它,结果出现以下异常:

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

我只是用_替换了空格。然而,我也试过不这样做。毫无效果。如果我们观察到异常,"的Controltovalidate属性是什么欺骗我。是我的验证器没有添加,还是它找不到我的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是面板类型,control是UIControl, ddl是实际的下拉框或文本框控件,tr表示表行。

抱歉,我之前没有包含完整的代码。

必需字段验证器的ControltoValidate属性

我认为你遇到的问题是,你正试图添加一个验证器到一般的Control对象,但你只能将它们添加到接受用户输入的控件-即TextBox, Dropdown等:

不是所有的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,所以消息没有一个值显示给你。

相关文章:
  • 没有找到相关文章