<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);
}
答案 0 :(得分:2)
选项1:
将两个验证器添加到文本框中,并根据用户选择启用/禁用它们。
选项2:
使用自定义验证器将下拉列表考虑在内(并可能将其全部包装到自定义控件中)。
其中,我认为我更喜欢选项1,但我必须尝试查看它在浏览器中的实际效果(在javascript中交换启用的验证器有多简单或可行)。
您不想动态添加/删除验证器,因为必须在服务器端完成验证,这意味着当用户更改下拉列表选项以在时进行回发>您可以验证文本框。我建议的两种解决方案都避免这种情况。