ASP.NET-验证UserControl内部的控件

xuo3flqw  于 2023-02-01  发布在  .NET
关注(0)|答案(2)|浏览(145)

我在DropDownList周围有一个 Package 器UserControl,用于管理DropDownList值的语言特定翻译。
我还有一个必填字段验证器,这是内部下拉列表所必需的。
如何通过用户控件公开此控件以允许验证?
我当前收到的错误如下所示:

... cannot be validated. at System.Web.UI.WebControls.BaseValidator.CheckControlValidationProperty(String name, String propertyName)
      at System.Web.UI.WebControls.BaseValidator.ControlPropertiesValid()

编辑:我现在用的是......

[ValidationPropertyAttribute("SelectedValue")]

......与

public string SelectedValue
{
    get { return cboI18nItems.SelectedValue; }
}

如果我在回发时检查页面的IsValid属性,它现在就可以工作了。

h4cxqtbf

h4cxqtbf1#

验证程序应位于UserControl内部,但可从页访问。
或者在UserControl上设置ValidationProperty
1.将验证程序放在UserControl中。它可以访问数据输入控件的ID。
1.使用CustomValidator。不要使用其ControlToValidate属性。相反,您将在自己的计算函数中通过UserControl访问DropDownList。您可能会将DropDownList字段设置为Public,以便在将UserControl对象类型转换为该UserControl的类后可以看到该字段。
1.可以使用ValidationPropertyAttribute。您需要向用户控件添加一个属性,以返回数据的字符串值。
找到here

omtl5h9j

omtl5h9j2#

我处理这个问题的方式和上面的建议有点不同。下面是我的代码中的一段代码片段:

Protected Sub ValidateCreditCard()
    Dim validators = Page.GetValidators("cc")
    For Each v In validators
        DirectCast(v, BaseValidator).Validate()
    Next
End Sub

NET代码,但应该很容易弄清楚.

相关问题