【问题标题】:Dynamically changing the type of validator on a textbox动态更改文本框上的验证器类型
【发布时间】:2009-04-08 15:48:08
【问题描述】:
<asp:DropDownList ID="ddl1" runat="server">
    <asp:ListItem Text="First" Value="1"></asp:ListItem>
    <asp:ListItem Text="Second" Value="2"></asp:ListItem>
</asp:DropDownList>

<asp:TextBox ID="tb1" runat="server"/>

<asp:Button ID="btn1" text="Go!" OnClick="btn1_Click" runat="server" />



public void btn1_Click(object sender, EventArgs e)
{


}

如果用户选择带有文本“First”的下拉菜单,则文本框中的数据必须是数字。 如果他们选择“第二”,则只能是字母。

如何动态创建验证控件并更改其行为?

我尝试过创建验证对象,将控件设置为对文本框进行验证,并在 btn1_click 事件中调用其 Validate 方法,但没有成功。

更新

这是我试过的代码:

public void btn1_Click(object sender, EventArgs e)
    {
        RequiredFieldValidator rfv1 = new RequiredFieldValidator();

        rfv1.ID = "rfv1";
        rfv1.ControlToValidate = tb1.ID;
        rfv1.Text = "please enter a value for tb1";


        rfv1.Validate();

        Response.Write("<br>Page.IsValid: " + Page.IsValid);

    }

【问题讨论】:

  • 你能发布更多代码吗?特别是您在上一句中提到的代码?

标签: asp.net validation textbox


【解决方案1】:
  • 选项 1:
    将两个验证器添加到文本框并根据用户选择将它们设置为启用/禁用。

  • 选项 2:
    使用将下拉列表考虑在内的自定义验证器(并可能将其全部包装到自定义控件中)。

其中,我认为我更喜欢选项 1,但我必须尝试一下,看看它在浏览器中的实际效果如何(在 javascript 中交换启用的验证器有多容易或是否可能)。

您不想动态添加/删除验证器,因为这必须在服务器端完成,这意味着当用户更改下拉列表选择以设置正确的验证器时进行回发之前 您可以验证文本框。我建议的两种解决方案都避免了这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2010-11-21
    • 2011-05-08
    相关资源
    最近更新 更多