我有一个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;
}
}
答案 0 :(得分:0)
想象没有代码是非常困难但我的猜测是添加
ValidateEmptyText="true"
到自定义验证器。