Как добавить необходимый валидатор в ajax AsyncFileUpload? - PullRequest
3 голосов
/ 06 июня 2010

Как добавить требуемый валидатор на стороне клиента в asyncfileupload, чтобы заставить пользователя выбирать файл перед отправкой страницы.

Ответы [ 2 ]

2 голосов
/ 04 мая 2012

Вы также можете установить текст скрытого текстового поля в методе на стороне сервера, используя C # или VB, а не Javascript или JQuery на стороне клиента.

    protected void afu_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
        afu.SaveAs(Server.MapPath("Uploads\\") + e.FileName);

        txt.Text = e.FileName;       
    }
1 голос
/ 19 декабря 2010

Я использую RequiredFieldValidator, который проверяет невидимый TextBox. TextBox заполняется произвольным текстом в функции OnClientUploadComplete. Единственное, что вы не можете, это установить фокус, когда он проверен. В примере используется jQuery.

<ajaxToolkit:AsyncFileUpload runat="server" ID="afu" ClientIDMode="AutoID" UploaderStyle="Traditional" OnClientUploadComplete="asyncUploadComplete" OnClientUploadStarted="asyncUploadStarted" />
<asp:RequiredFieldValidator runat="server" ID="rfv" ControlToValidate="txt" Text="The file is required!" SetFocusOnError="false" />
<asp:TextBox runat="server" ID="txt" style="display:none" MaxLength="0" />
<script type="text/javascript">
    // AsyncFileUpload - OnClientUploadComplete
    function asyncUploadComplete(sender, args) {
        // Assemble info of uploaded file
        var contentType = args.get_contentType();
        var info = args.get_length() + " bytes";
        if (contentType.length > 0) {
            info += " - " + contentType;
        }
        info += " - " + args.get_fileName();
        // Put info in the first input field after the AsyncFileUpload control
        var source = $(sender.get_element());
        source.nextAll('input').val(info);
        // Validate immediately
        ValidatorEnable(source.nextAll('span')[0], true);
    }
    // AsyncFileUpload - OnClientUploadStarted
    function asyncUploadStarted(sender, args) {
        // Clear the first input field after the AsyncFileUpload control
        var source = $(sender.get_element());
        source.nextAll('input').val('');
    }
</script>
...