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

时间:2010-11-05 14:35:21

标签: asp.net validation user-controls

我有一个围绕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属性,那么现在正在使用。

2 个答案:

答案 0 :(得分:5)

您的Validator应该在您的UserControl中,但可以从页面访问。

或者在UserControl上设置ValidationProperty

  
      
  1. 将验证器放在UserControl中。它可以访问ID   数据录入控制。
  2.   
  3. 使用CustomValidator。不要使用其ControlToValidate属性。   相反,在你自己的评估中   功能你将访问   DropDownList通过UserControl。   你可能会做的   DropDownList字段公共所以它可以   一旦你对UserControl进行了类型转换就看到了   反对那个类   用户控件。
  4.   
  5. 可以使用ValidationPropertyAttribute。   您需要为您的房产添加房产   usercontrol返回一个字符串   数据的价值。
  6.   

找到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代码,但应该很容易理解。