从Code Behind获取ValidationSummary错误文本

时间:2013-12-03 20:13:39

标签: c# asp.net validationsummary

感谢您阅读本文!

我可能正在寻找这个问题的答案,或者可能是因为ValidationSummary是客户端逻辑,但它可能从未设计过,但有没有办法在ASP中检索验证摘要字段的错误文本来自C#代码隐藏的.NET?这里的目标是构建一条消息,其中包含用户输入的各种信息,以及可能阻止该用户完成操作的任何错误。

如果无法完成,那很好,因为我不希望客户端验证对于此程序中的用户来说是个大问题,但为了完成而包含它会很好。任何建议将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

您的麻烦可能是这些通常在客户端而不是服务器端验证,如果它们实际上不会导致回发。您可能最好尝试切换到CustomValidator并在那里进行检查。

这些发生在服务器端而不是客户端。

查看MSDN http://msdn.microsoft.com/en-us/library/9eee01cx(v=vs.85).aspx

上的文档

我从来没有尝试过这个,但这里有一个可行的快速例子。

前端

<asp:TextBox id="Text1" runat="server" />

<asp:CustomValidator id="CustomValidator1" runat="server"
           OnServerValidate="CustomValidator1_ServerValidate"
           Display="Static"
           ErrorMessage="My default message."/>

后端

protected void ServerValidation (object source, ServerValidateEventArgs args)
{
    // default to valid
    args.IsValid = true;
    int i;
    if (int.TryParse(Text1.Text.Trim(), out i) == false)
    {
        // validation failed, flag invalid
        args.IsValid = false;
        CustomValidator1.ErrorMessage = "The value " + Text1.Text.Trim() + " is not a valid integer";
    }
}

答案 1 :(得分:0)

  protected string GetErrors()
    {
        string Errors = "";
        bool isValidTest = false;
        Validate("myValidationGroup");
        isValidTest = IsValid;
        if (!isValidTest)
        {
            foreach (BaseValidator ctrl in this.Validators)
            {
                if (!ctrl.IsValid && ctrl.ValidationGroup == "myValidationGroup")
                {
                    Errors += ctrl.ErrorMessage + "\n";
                }
            }

        }

        return Errors.Trim();
    }