【问题标题】:How do I add an ASP.NET control inside an ASCX to an external RequiredFieldValidator programmatically?如何以编程方式将 ASCX 内的 ASP.NET 控件添加到外部RequiredFieldValidator?
【发布时间】:2010-11-09 09:13:48
【问题描述】:

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

【问题讨论】:

  • 你的意思不是 ControlToValidate,而不是 AssociatedControlID?

标签: c# asp.net validation user-controls ascx


【解决方案1】:

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

public DropDownList DropDownToValidate
    {
        get
        {
            return ddlTest;
        }
    }

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

protected void Page_Load(object sender, EventArgs e)
{

    RequiredFieldValidator1.ControlToValidate = WebUserControl1.DropDownToValidate.UniqueID;
}

【讨论】:

  • 谢谢!我无法让它为嵌套在用户控件中的用户控件工作,但我感谢所有帮助。
  • 我们现在已经 8.5 年了,但这个解决方案对我不起作用。如果我进行连线,我会收到Unable to find control id 'ctl00$MainContent$TextFieldIdentifier$TB' referenced by the 'ControlToValidate' property of 'TextFieldIdentifierValidator'.。在Page_Load() 上接线。
  • 您是否将用户控件动态添加到主页?也许尝试移动设置控件以验证到 Page_PreRender 或者可能在页面上设置的负载处理程序控件上。
【解决方案2】:

我知道这样做的唯一方法是在您的用户控件类中执行此操作:


[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" />

不是完全同样的事情,但这是我所知道的唯一解决方法。

【讨论】:

  • 这个对我有用,但是它在验证之前会进行回发,这与其他验证常规文本框的RequiredFieldValidators不同,任何关于让它们同时工作的建议。跨度>
  • 您是不是 Chris Mullins 的回答并公开了整个下拉列表而不仅仅是 SelectedValue?除此之外,您可能需要编写一些自定义 javascript。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2012-07-03
    • 2011-02-18
    相关资源
    最近更新 更多