3

我在用户控件 (ASCX) 中有一个下拉列表,我想从放置 ASCX 的页面验证它,但是当我将 ControlToValidate 设置为下拉列表时,页面抱怨它可以'找不到。感谢您的任何帮助/建议。

4

3 回答 3

5

在您的用户控件中使用公共属性公开下拉列表:

public DropDownList DropDownToValidate
    {
        get
        {
            return ddlTest;
        }
    }

然后使用暴露的 Dropdown 的 UniqueID 将控件设置为在您放置用户控件的页面的页面加载中进行验证:

protected void Page_Load(object sender, EventArgs e)
{

    RequiredFieldValidator1.ControlToValidate = WebUserControl1.DropDownToValidate.UniqueID;
}
于 2009-07-09T13:38:29.430 回答
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" />

完全一样,但这是我知道的唯一解决方法。

于 2009-07-09T13:33:24.757 回答
1

我认为验证用户控件的最佳方法是在用户控件中使用公共方法:

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

其中reqRecipientName, reqRecipientMail... 是验证器的 ID(它们也是 insice ascx)。然后在页面内提交方法调用controlId.Validate(); 这对我有用。

于 2009-12-12T10:27:25.357 回答