动态更改文本框上验证程序的类型

时间:2009-04-08 15:48:09

标签: asp.net validation textbox

<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);

    }

1 个答案:

答案 0 :(得分:2)

  • 选项1:
    将两个验证器添加到文本框中,并根据用户选择启用/禁用它们。

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

其中,我认为我更喜欢选项1,但我必须尝试查看它在浏览器中的实际效果(在javascript中交换启用的验证器有多简单或可行)。

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