将RequiredValidator附加到呈现文本框的自定义服务器控件上

发布于 2024-07-19 07:25:42 字数 289 浏览 10 评论 0原文

我不知道这是否真的可能,但我正在尽力。

如果我有一个(复杂的)自定义服务器控件,它(除了其他控件之外)在 UI 上呈现一个文本框。 将服务器控件放置在页面上时,是否可以将 requiredField 验证器附加到该服务器控件,以便验证器验证该控件的 Text 属性,该属性指向所呈现的 TextBox 的 Text 属性?

当然,我可以将RequiredField 验证器直接合并到服务器控件中,但由于其他原因这是不可能的(我们在UI 上自动呈现RequiredField 验证器)。

感谢您的帮助。

I don't know whether this is really possible, but I'm trying my best.

If I have a (complex) custom server control which (beside other controls) renders a TextBox on the UI. When placing the server control on a page, would it be possible to attach a RequiredField validator to that server control, such that the validator validates the Text property of that control which points to the Text property of the rendered TextBox?

Of course I could incorporate the RequiredField validator directly into the server control, but this is for other reasons not possible (we are rendering RequiredField validators automatically on the UI).

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掐死时间 2024-07-26 07:25:42

我认为一种解决方案是将 TextBox 控件放入面板中,然后在 Page_Load 事件处理程序上动态添加RequiredValidator 控件。

<asp:Panel ID="Panel1" runat="server">
 <MyCustomTextBox ID="TextBox1" runat="server"></MyCustomTextBox>
 </asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

然后

protected void Page_Load(object sender, EventArgs e)
        {
            var validator = new RequiredFieldValidator();
            validator.ControlToValidate = "TextBox1";
            validator.ErrorMessage = "This field is required!";
            Panel1.Controls.Add(validator);

        }

我将 CustomTextBox 放入面板中,以确保添加时验证控件位置正确

I think one solution is to put your TextBox control inside a Panel then you add the RequiredValidator control dynamically on the Page_Load event handler.

<asp:Panel ID="Panel1" runat="server">
 <MyCustomTextBox ID="TextBox1" runat="server"></MyCustomTextBox>
 </asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

then

protected void Page_Load(object sender, EventArgs e)
        {
            var validator = new RequiredFieldValidator();
            validator.ControlToValidate = "TextBox1";
            validator.ErrorMessage = "This field is required!";
            Panel1.Controls.Add(validator);

        }

I put the CustomTextBox inside the panel to assure that the validation controle place is correct when added

梓梦 2024-07-26 07:25:42

我明白了,这是我第二次回答我自己的帖子:)下次我会做更深入的研究。

对于那些可能遇到同样问题的人。 您必须在服务器控件的类上指定 ValidationProperty 属性。 例如,如果您的服务器控件公开了一个属性“Text”,该属性向用户显示并且也应该进行验证,您可以添加以下内容:

[ValidationProperty("Text")]

然后它应该可以工作。

I got it, the 2nd time that I'm answering to my own post :) Next time I'll do a deeper research before.

For those of you that may encounter the same problem. You have to specify the ValidationProperty attribute on your server control's class. For instance if your server control exposes a property "Text" which is displayed to the user and which should also be validated, you add the following:

[ValidationProperty("Text")]

Then it should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文