2016-03-07 110 views
0

我正在使用Kendo UI上传控件。我已经定义了像这样的Kendo UI上传:Kendo上传访问文件?

@(Html.Kendo().Upload() 
      .Name("files") 
      .Events(events => events.Select("onSelectFiles")) 
      ) 

并且在提交表单(使用telerik定义的基本上传方法)时上传文件。

现在,我想使用按钮和ajax调用来执行上传,所以我需要发送所选文件作为调用参数。 异步上传不适合我的情况,因为我想通过按钮来控制上传。 如何访问选定的文件?

回答

0

我们实际上在工作中使用Kendo作为我们的用户界面。 Ajax上传按钮不算太坏。这里有一个例子VB动作和剃刀(我选择了VB,因为它是这个应用程序的语言,如果你需要C#它的EZ翻译。)

主要要注意的事情:在剃刀的SaveField字符串必须用于名称在控制器方法中IEnumerable HttpPostedFileBase arg,否则文件将不会传递给动作。这是一个剑道怪癖。

VB方法西格

Public Function UploadFile(files As IEnumerable(Of HttpPostedFileBase)) As ActionResult 
//dostuff 

刀片座

@(Html.Kendo().Upload() 
    .Name("previewFile") 
    .Multiple(false) 
    .Async(a => a 
     .Save("UploadFile", "PosterSignup") 
     .Remove("RemoveFile", "PosterSignup") 
     .SaveField("files") 
     .AutoUpload(true) 
    ) 
    .Events(e => e 
     .Select("onPreviewSelect")) 
    ) 

在剃刀代码选择事件可以使用函数来执行检查或对话框的提示,你可以强制取消通过执行preventDefault()来自动上载。阿卡

订阅选择事件来控制上传

function onPreviewSelect(e) { 
    if(//someCheck){ 
     e.preventDefault(); 
    } 
} 

如果你不想autoUpload和的preventDefault还可以去除autoUpload和使用任何剑道行动暴露,开始文件流媒体服务器(我忘了他们的文件是可怕的)。