Проверка ASP.NET FileUploader с CustomValidator - PullRequest
0 голосов
/ 10 мая 2018

У меня есть элемент управления FileUpload для загрузки файла сертификата. Пользователь должен загрузить файл в первый раз, при последующих посещениях страницы мы отображаем содержимое сертификата на странице, поэтому нет необходимости загружать файл снова.

Теперь я хочу проверить, что сертификат загружен хотя бы за один раз. На остальной части страницы используются элементы проверки ASP.NET, поэтому я хочу продолжить с тем же.

Я не могу использовать RequiredFieldValidator для FileUpload, потому что тогда он будет срабатывать каждый раз, когда я пытаюсь сохранить страницу, что неправильно.

Я пытался использовать 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 голосов
/ 10 мая 2018

Очень трудно представить без кода, но я думаю, что было бы добавить

ValidateEmptyText="true"

для пользовательского валидатора.

...