C# 如何使用clientside.ascx中的控件ID并在服务器端ascx.cs(ASP.NET)中使用它

C# 如何使用clientside.ascx中的控件ID并在服务器端ascx.cs(ASP.NET)中使用它,c#,asp.net,C#,Asp.net,我在my.acsx中定义了一个ASP.NET控件,服务器端的一些代码在my.cs中检查它,如果数据输入无效,则创建一个新的自定义验证器 我试图在控件旁边显示错误消息,但无法将ControlToValidate属性设置为控件的ID。Visual Studio突出显示带有错误的ContactTelephoneTextBox: 无法转换源类型 这是.cs中的自定义验证器 Page.Validators.Add(new CustomValidator() { Display = Validato

我在my.acsx中定义了一个ASP.NET控件,服务器端的一些代码在my.cs中检查它,如果数据输入无效,则创建一个新的自定义验证器

我试图在控件旁边显示错误消息,但无法将
ControlToValidate
属性设置为控件的
ID
。Visual Studio突出显示带有错误的
ContactTelephoneTextBox

无法转换源类型

这是.cs中的自定义验证器

Page.Validators.Add(new CustomValidator()
{
    Display = ValidatorDisplay.Dynamic,
    ControlToValidate = ContactTelephoneTextBox, 
    ID = "phoneInvalid",
    IsValid = false,
    ErrorMessage = "Please enter a valid phone number.", 
    field",
});
在我的.ascx中

<div id="ContactTelephone">
    <asp:Label ID="ContactTelephoneLabel" AssociatedControlID="ContactTelephoneTextBox"
        CssClass="required formFont2015 formLabel2015" runat="server">Contact number</asp:Label>
    <asp:TextBox ID="ContactTelephoneTextBox" CssClass="boxStyle2015" runat="server"></asp:TextBox>
</div>

联系电话
需要的是字符串而不是控件,因此应该可以:

Page.Validators.Add(new CustomValidator()
{
    Display = ValidatorDisplay.Dynamic,
    ControlToValidate = ContactTelephoneTextBox.ClientID, 
    ID = "phoneInvalid",
    IsValid = false,
    ErrorMessage = "Please enter a valid phone number.", 
    field",
});

谢谢这是编译的,根据ClientID的描述判断,我认为这是可行的。但是当输入无效数据时,错误消息不会显示在控件旁边,知道我哪里出错了吗?@ecclesm:为什么不声明性地添加验证器(在您的aspx上也是如此)?你知道你必须重新创建在每次回发时动态添加的所有控件吗?嗨,蒂姆,我没有否决你,事实上我还没有足够的代表支持你,但你的回答解决了我问的问题。我不确定为什么有人对此投了反对票。