1

MVC3 アプリケーションにテレリック ファイル アップロード コントロールを使用しています。非同期機能を使用してファイルをアップロードしています。以下は私が使用しているコードです。

@(Html.Telerik().Upload()
        .Name("files")
        .ShowFileList(true)    
        .Multiple(true)                                    
        .Async(
                async => async
                .Save("Save", "MyController")
                .AutoUpload(false)
                .Remove("Remove", "MyController")                            
            )
    )

[HttpPost]
        public ActionResult Save(IEnumerable<HttpPostedFileBase> files)
        {            
            foreach (var file in files)
            {
                // Some browsers send file names with full path. We only care about the file name.
                var fileName = Path.GetFileName(file.FileName);
                var destinationPath = Path.Combine(Server.MapPath("~/App_Data"), fileName);

                file.SaveAs(destinationPath);
            }
            return Content("");
        }

上記のコードは 2 つのボタンを生成します。「選択」と「ファイルのアップロード」。4 つのファイルを選択して [ファイルのアップロード] ボタンを押した後、テレリックはアクション メソッドを非同期で 4 回呼び出します (これは悪いことです)。私が望んでいたのは、メソッドを一度だけ呼び出す必要があり、4 つのファイルすべてを一度にメソッドに送信することでした (ファイルのリストを受け入れているため)。

では、Html.Telerik().Upload() コントロールでこれを達成するにはどうすればよいですか?

また、このコントロールを Html.Telerik().Window() で表示するので、アップロードしたデータを親ページに送信する必要があります。これを行う方法も役立ちますか?

ありがとう。

4

1 に答える 1

0

提案として、他の値を持つフォーム投稿の一部としてファイルを処理する場合は、ファイルを非同期でアップロードすることを検討してください。これを行うには、非表示のフォームフィールドを使用してIDをアップロードされたファイルに関連付け、その値をonUpload(e)クライアントイベントのe.data引数に含めます。このようにして、ファイルが一時的な場所に保存されている間にフォームを検証し、IDに関連付けられたファイルとともにフォームの投稿を処理できます。

それ以外の場合、どうしても同期が必要な場合は、Telerikのドキュメントによると、複数の同期アップロードを問題なく実行できるようです。

http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-upload-synchronous-upload.html

于 2012-05-23T21:32:18.277 に答える