2010-09-09 25 views
0

在我的.aspx頁面中,我有一個ValidationSummary,其中放置了由業務層返回的錯誤消息。將「文本」屬性設置爲ASP.NET中的CustomValidator(Webforms)

錯誤消息出現在彙總,確定,但不是「*」,通常後面會出現一個字段=(

在後面的代碼,我有以下代碼:

CustomValidator cv = new CustomValidator(); 
cv.ControlToValidate = field.ID; 
cv.ErrorMessage = "Error Message"; 
cv.Text = "*"; 
cv.IsValid = false; 
Page.Validators.Add(cv); 

基本上,我想添加的「*」旁邊的每個不正確的字段,但是沒有爲它們建立CustomValidators ......這可能嗎?

回答

1

ErrorMessage屬性將被顯示在ValidationSummaryText財產將顯示在Validator所在的位置。爲了滿足您的要求,您需要將CustomValidators放在您要驗證的控件旁邊。

由於所有驗證器都是在後面的代碼中生成的,因此您需要使用Page.Controls.AddAt(int indexer, Control child)將這些驗證器添加到適當的位置,因爲CustomValidator也是一個控件。

當您在文本框旁邊添加驗證程序時,您可以通過以下代碼獲取確切的索引。

<form id="form1" runat="server"> 
    <asp:TextBox ID="tb" runat="server"></asp:TextBox> 
    <asp:Button runat="server" Text="just a post back" /> 
</form> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    CustomValidator v = new CustomValidator(); 
    v.ErrorMessage = "error!"; 
    v.Text = "****"; 
    v.ControlToValidate = "tb"; 
    int index = form1.Controls.IndexOf(tb); 
    form1.Controls.AddAt(index + 1, v); 
} 

注意:如果你把文本中的佔位符或一些容器,你不能因爲form1.Controls回報Container.Controls第1級的孩子只控制得到它。

+0

謝謝! 「索引」幫助我=) – Kira 2010-09-13 17:02:38

相關問題