2009-07-09 43 views
3

我有一個用戶控件(ASCX)內的下拉列表,我想從我放置ASCX的頁面進行驗證,但是當我將ControlToValidate設置爲下拉列表時,頁面會抱怨它無法找到。感謝您的任何幫助/建議。如何以編程方式將ASCX內的ASP.NET控件添加到外部的RequiredFieldValidator中?

+0

難道你不是指ControlToValidate,不是AssociatedControlID? – 2009-07-09 13:29:56

+0

是的,哈哈,謝謝。 – mkelley33 2009-07-09 18:34:12

回答

5

暴露的下拉列表,在用戶控件的公共屬性:

public DropDownList DropDownToValidate 
    { 
     get 
     { 
      return ddlTest; 
     } 
    } 

然後使用暴露下拉的UniqueID設置控制在你放棄了網頁的頁面加載驗證用戶控制:

protected void Page_Load(object sender, EventArgs e) 
{ 

    RequiredFieldValidator1.ControlToValidate = WebUserControl1.DropDownToValidate.UniqueID; 
} 
3

我知道只有這樣,才能做到這一點是要做到這一點在你的用戶控件類:


[ValidationProperty("Foo")] 
public class MyUserControl : UserControl 
{ 
    public string Foo 
    { 
      get { return(yourDropDown.SelectedValue); } 
    } 
} 

然後在你的頁面放置在用戶控件:


<asp:RequiredFieldValidator ControlToValidate="yourUserControlName" runat="server" ErrorMessage="You are required to make a selection" /> 

相當於是同樣的事情,但這是我知道的唯一解決方法。

+1

這一個爲我工作,但它之前進行回發驗證哪些是不同於驗證常規文本框的其他RequiredFieldValidators,有關讓他們同時工作的任何建議。 – 2009-10-15 13:22:14

1

我想驗證用戶控制的最佳方式是讓你的用戶控件中的公共方法:

public void Validate() { 
    reqRecipientName.Validate(); 
    reqRecipientMail.Validate(); 
    valRecipientMail.Validate(); 
    reqRecipientPhone.Validate(); 
} 

其中reqRecipientName,reqRecipientMail ...是驗證器的ID(它們也是insc ascx)。 然後在頁面裏面提交方法調用controlId.Validate(); 這適用於我。

相關問題