2009-07-09 22 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(); 这适用于我。