2013-04-12 116 views
5

我目前使用Kendo UI上传文件到数据库使用MVC3和Razor和实体框架。我在我网站的几个领域都有很好的工作,除非我需要限制它只允许单独上传。我有多个设置为false,我需要禁止多个选择,但用户仍然被允许单击选择按钮多次添加文件,违反数据库中此字段的要求。如何限制Kendo UI Web上传仅允许单个上传?

我尝试了一些建议,我想我自己的网站上发现,但它们指的是在当前的请求发送当前选定的项目,而不是整个的上传列表中(见下图)。

<script type="text/javascript"> 
    function singleFile(e) { 
    var files = e.files; 
    if (e.files.length > 1) { 
     alert('Only one file may be uploaded, cancelling operation...'); 
     e.preventDefault(); 
    } 
    } 
</script> 
@(Html.Kendo().Upload() 
    .Name("resumeAttachments") 
    .Multiple(false) 
    .Async(async => async 
     .Save("ResumeSave", "File") 
) 
    .Events(c => c 
     .Upload("resumeOnUpload") 
) 
    .Events(c => c 
     .Success("resumeOnSuccess") 
) 
    .Events(c => c 
     .Complete("singleFile") 
) 
) 

File list - Allowed up upload multiple files, singularly

+0

也许这是不同的,那么,现在(v2016.3.1028)当使用'多:FALSE'的删除操作被称为除了附加动作 - 控制清理先前选定的文件。但是,如果您的要求是他们无法更改其最初上传的文件,那么您的接受解决方案或非异步+非多重配置就可以工作。 – mlhDev

回答

3

后想在周末的一点点(和假期的长周末放松),它打我...改变singleFile功能,下面将禁用文件上传后的控制。

function singleFile(e) { 
    var upload = $("#resumeAttachments").data("kendoUpload"); 

    // disables the upload after upload 
    upload.disable(); 
} 
0

此外,补充说:

var dropzone = $(".k-dropzone").addClass("hide"); 

到singleFile()函数将隐藏在上传后选择键完成,让你再也不能上传,考虑到非常真实的印象:

.hide { 
    display: none; } 

是在你的css某处定义的。

5

他们给我以防止多个上传我碰到这个页面迷迷糊糊的要求后。
“多”设置为FALSE的作品就好了,如果它是正确完成。

(后

而当您查看.Kendo()实际上被转换到.kendoUpload

页面的源代码,你可以使用剑道剃刀语法,通知

因此,我更喜欢这种语法在JavaScript中@using):

@using Kendo.Mvc.UI; 

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#files").kendoUpload({"multiple":false, 
     async: { 
      saveUrl: '@Url.Action("Save", "Upload", new { typeOfUploadedFile= @Model.DocName.ToString(), @proposalNo = @Model.ProposalNo.ToString(), area = ""})', 
      removeUrl: '@Url.Action("Remove", "Upload")', 
      autoUpload: true 
     } 
    }); 
}); 

</script> 
+0

此代码有效。谁决定开车和倒车?谢谢! –

+0

其实这不是多重的:错误的作品。来自kendo ui网站:“此选项不限制异步配置中上传文件的总数。” – pootzko

+0

可悲的是我没有和Kendo环境签订合同来确认或拒绝你的回复(以帮助stackoverflow社区)。我只是记得它正在工作,并且获得质量保证认证,但我目前无法验证。 thx –

-1

您必须剑道upload设定值的multiple财产false;
例如@(Html.Kendo().Upload().Multiple(false))