3

ページを送信する前にユーザーにファイルを選択させるために、クライアント側で必要なバリデーターを asyncfileupload に追加する方法。

4

2 に答える 2

2

クライアント側の Javascript または JQuery 関数ではなく、C# または VB を使用して、サーバー側のメソッドで非表示のテキスト ボックスのテキストを設定することもできます。

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

        txt.Text = e.FileName;       
    }
于 2012-05-04T17:18:24.263 に答える
1

非表示の TextBox を検証する RequiredFieldValidator を使用します。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>
于 2010-12-19T12:20:13.147 に答える