我有一个用户控件(ASCX)内的下拉列表,我想从我放置ASCX的页面进行验证,但是当我将ControlToValidate设置为下拉列表时,页面会抱怨它无法找到。感谢您的任何帮助/建议。如何以编程方式将ASCX内的ASP.NET控件添加到外部的RequiredFieldValidator中?
3
A
回答
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();
这适用于我。
难道你不是指ControlToValidate,不是AssociatedControlID? – 2009-07-09 13:29:56
是的,哈哈,谢谢。 – mkelley33 2009-07-09 18:34:12