2016-03-07 138 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和使用任何劍道行動暴露,開始文件流媒體服務器(我忘了他們的文件是可怕的)。