我有一个围绕DropDownList的包装器UserControl控件,用于管理DropDownList值的语言特定转换。
我还有一个必需的字段验证器,需要内部下拉列表。
如何通过usercontrol公开此控件以允许验证?
我目前得到的错误如下:
... 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属性,那么现在正在使用。
答案 0 :(得分:5)
您的Validator应该在您的UserControl中,但可以从页面访问。
或者在UserControl上设置ValidationProperty
- 将验证器放在UserControl中。它可以访问ID 数据录入控制。
- 使用CustomValidator。不要使用其ControlToValidate属性。 相反,在你自己的评估中 功能你将访问 DropDownList通过UserControl。 你可能会做的 DropDownList字段公共所以它可以 一旦你对UserControl进行了类型转换就看到了 反对那个类 用户控件。
- 可以使用ValidationPropertyAttribute。 您需要为您的房产添加房产 usercontrol返回一个字符串 数据的价值。
醇>
找到here。
答案 1 :(得分:1)
我处理这个问题的方式与上面提到的有点不同。以下是从我的代码中获取的代码段:
Protected Sub ValidateCreditCard()
Dim validators = Page.GetValidators("cc")
For Each v In validators
DirectCast(v, BaseValidator).Validate()
Next
End Sub
VB.NET代码,但应该很容易理解。