2012-07-26 98 views
0

我在asp.net中创建了一个自定义文本框控件。我在文本框中为字母,数字和电子邮件地址放置了一些内置验证。现在我希望如果任何这些验证都失败了,应该在文本框下方动态添加标签(错误标签)。在asp.net中在运行时添加标签

可能吗?

感谢

回答

0

不要添加标签,但一个CustomValidator(或其他验证之一)。

将其Display属性设置为动态,如果您希望仅在检测到错误时才显示该属性。

+0

嗯......谢谢史蒂夫,但我想在这里添加标签,因为我没有使用任何验证控件。其实我试图创建一个自定义的文本框控件,您可以在枚举中指定验证的类型,如果任何验证失败,它将在文本框下面的标签中显示错误。 – 2012-07-26 14:05:36

+0

为什么不创建一个单独的控件,继承'BaseValidator'并专用于您的自定义控件?您将受益于整个验证框架,包括使用ValidationSummary的能力,将错误消息放入页面任何位置的能力,使用Page.Validate,验证组等的可能性。 – 2012-07-26 14:09:01

+0

您是否在说我应该定义一个继承BaseValidator的类,它将拥有所有的验证并在自定义文本框控件中使用它的对象? – 2012-07-26 14:18:13

0

您不需要单独的标签,ASP.NET中的每个Validator都可以给出适当的ErrorMessage,它可以出现在文本框旁边。

有从BaseValidator继承了look at the list of validators,它会给你一切你需要做到这一点

如果你坚持要使用自己的验证,并使用客户端的JavaScript正在做它,然后创建类似于下面的东西......

<asp:Label runat="server" id="lblErrors" style="display:none;"> 
    You have errors! 
</asp:Label> 

然后在你的验证......

document.getElementById("<%=lblErrors.ClientID%>").style.display = 
    (anyErrors ? "" : "none"); 

如果您[R验证全部完成在服务器上,然后有像...

<asp:Label runat="server" id="lblErrors" Visible="false"> 
    You have errors! 
</asp:Label> 
在验证

则...

lblErrors.Visible = anyErrors 

(您也想确保lblErrors.Visible也设置如果验证没有发生,则为false