1

我正在为我的 MVC3 应用程序使用 Telerik 文件上传控件。我正在使用它的异步功能来上传文件。下面是我正在使用的代码。

@(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("");
        }

上面的代码将生成两个按钮,即。“选择”和“上传文件”。选择 4 个文件并按下“上传文件”按钮后,telerik 异步调用操作方法 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 回答