ASP.Net:使用C#验证单选按钮输入

时间:2016-05-26 15:24:32

标签: c# asp.net validation radiobuttonlist

我遇到了为我的单选按钮列表创建自定义验证器输入的问题。我把所有东西都编码了,一切都没有问题。当验证发生时,它没有任何反应。我的其他验证工作正常。

这是我的HTML代码:

<asp:RadioButtonList ID="SalaryPaidByEFT" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" CssClass="width-100 radio">
    <asp:ListItem Text="Yes" Value="true"></asp:ListItem>
    <asp:ListItem Text="No" Value="false"></asp:ListItem>
    <asp:ListItem Text="Not Applicable" Value="null" Selected="True"></asp:ListItem>
</asp:RadioButtonList>
<asp:CustomValidator ID="cvSalaryPaidByEFT" runat="server"
    ErrorMessage="Salary Must Be Paid By EFT" ControlToValidate="SalaryPaidByEFT"
    OnServerValidate="cvSalaryPaidByEFT_ServerValidate" CssClass="has-error"
    Display="Dynamic"></asp:CustomValidator>

这是我的C#代码:

protected void cvSalaryPaidByEFT_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (this.SalaryPaidByEFT.SelectedIndex == 0);
}

任何人都可以发现我可能缺少的任何东西来引导我找到解决方案吗?

2 个答案:

答案 0 :(得分:0)

尝试两件事:

this.SalaryPaidByEFT.SelectedItem.Text == "Yes"

args.Value == "Yes"

答案 1 :(得分:0)

您是否错过了对this.Validate()方法的调用以及检查页面的IsValid属性..来自msdn示例:

if (this.IsPostBack)
{
    this.Validate();
    if (!this.IsValid)
    {
        string msg = "";
        // Loop through all validation controls to see which
        // generated the errors.
        foreach (IValidator aValidator in this.Validators)
        {
            if (!aValidator.IsValid)
            {
                msg += "<br />" + aValidator.ErrorMessage;
            }
        }
        Label1.Text = msg;
    }
}

您可能错过this msdn指令中有关自定义验证程序的第4步。

步骤4 - “在ASP.NET网页代码中添加测试以检查其有效性。有关详细信息,请参阅如何:以编程方式为ASP.NET服务器控件测试有效性。”