如何在MVC Telerik上传控件中异步发送所有上传的文件?

时间:2012-04-19 08:56:43

标签: jquery asp.net-mvc asp.net-mvc-3 telerik telerik-mvc

我正在为我的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()中显示此控件,因此我需要将上传的数据发送到我的父页面。任何帮助如何做到这一点?

感谢。

1 个答案:

答案 0 :(得分:0)

作为建议,如果您要将文件作为带有其他值的表单帖子的一部分进行处理,您可以考虑让文件异步上传。我这样做是通过使用隐藏的表单字段将ID与上传的文件相关联,并在onUpload(e)客户端事件的e.data参数中包含该值。这样,您可以在文件保存在临时位置时验证表单,并处理表单发布以及与您的ID关联的文件。

否则,如果你绝对想要同步,那么根据Telerik的文档,你可以毫无疑问地进行多重同步上传。

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