使用CustomValidator

时间:2018-05-10 11:37:39

标签: asp.net validation file-upload

我有一个FileUpload控件来上传证书文件。用户必须首次上传文件,在后续访问页面时,我们会在页面上显示证书内容,因此无需再次上传文件。

现在我想验证证书是否至少一次上传。页面的其余部分使用ASP.NET验证控件,所以我想继续使用相同的。

我无法在FileUpload上使用RequiredFieldValidator,因为每当我尝试保存页面时它都会触发,这是错误的。

我尝试使用CustomValidator并使用服务器端验证,但似乎只有在我点击文件上传器时才会触发。如果我不管它,则不会触发服务器端验证。

我当然可以在[保存]按钮点击事件上进行验证,但是有没有一种正确的方法来使用验证器事件本身呢?

的CustomValidator:

 <asp:CustomValidator ID="cusCertifacteExistanceValidator" runat="server"                                                      ValidationGroup="ConfigValidation" CssClass="errorMsg" ControlToValidate="fcertificate" Enabled="false"                                                            ErrorMessage="Certificate is not available" OnServerValidate="ValidateCertificateUpload">*</asp:CustomValidator>

CustomValidator服务器端验证:

protected void ValidateCertificateUpload(object source, ServerValidateEventArgs args)
    {
        args.IsValid = false;

        var existingCertificate = string.Empty;
        if (ViewState["loginProviderProperties"] != null)
        {
            existingCertificate = ((List<Configuration>)ViewState["properties"]).Find(p => p.Name == "certificate").Value;
        }

        if (fX509Certificate.HasFile || existingCertificate != string.Empty)
        {
            args.IsValid = true;
        }
    }

1 个答案:

答案 0 :(得分:0)

想象没有代码是非常困难但我的猜测是添加

ValidateEmptyText="true"

到自定义验证器。