2010-11-05 54 views
5

我有一個圍繞DropDownList的包裝UserControl控件,用於在DropDownList值上管理特定於語言的翻譯。ASP.NET - 在UserControl中驗證控件

我也有一個必需的字段驗證器,需要內部下拉列表。

如何通過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屬性,現在正在工作。

回答

5

您的驗證器應位於UserControl內部,但可從頁面訪問。

或者設置ValidationProperty在用戶控件

  1. 將驗證該用戶控件內。它可以訪問數據錄入控件的ID號 。
  2. 使用CustomValidator。不要使用它的ControlToValidate屬性。 相反,在您自己的評估 函數中,您將通過UserControl訪問 DropDownList。 您可能會將 DropDownList字段公開,因此可以在您將類型爲UserControl 的對象轉換爲該類的 UserControl時看到 。
  3. 它可能使用ValidationPropertyAttribute。 您需要將屬性添加到您的 usercontrol,該屬性返回數據的字符串值 。

找到here

+0

感謝ValidationProperty的工作,我忘了這隻會發生在服務器端,要求我檢查回發頁面的IsValid屬性。 – cweston 2010-11-05 15:21:17

+0

謝謝,「不要使用它的ControlToValidate屬性」爲我做了。 – JanBorup 2018-01-03 15:45:23

1

我處理這個問題有點不同於上面提出的建議。這是從我的代碼中提取的代碼片段:

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

VB.NET代碼,但應該很容易弄清楚。