Html.Kendo()。Upload()动态启用或禁用

时间:2014-02-05 18:03:13

标签: asp.net-mvc razor kendo-ui kendo-upload

我需要找到一种动态启用或禁用Kendo上传的方法:

  @(Html.Kendo().Upload()
        .Enable(false)
        .Name("attachments_" + item.QuestionId)
        .ShowFileList(true)
            .TemplateId("fileTemplate")
        .Async(a => a
             .Save("SaveAttachment", "Attachment", new { evaluationId = ViewBag.EvaluationId, questionId = item.QuestionId })
             .Remove("RemoveAttachment", "Attachment", new { evaluationId = ViewBag.EvaluationId, questionId = item.QuestionId })
             .AutoUpload(true)
        )
        .Files(files =>
        {
            if ((IList<dynamic>)ViewData["Attachment_" + item.QuestionId] != null)
            {
                foreach (var f in (IList<dynamic>)ViewData["Attachment_" + item.QuestionId])
                {
                    files.Add().Name(f.Name).Extension(f.Extension).Size(f.Size);
                }
            }
        })
)

我该怎么做?

我尝试将.Enable设置为:

.Enable(bool.Parse(ViewBag.AllowEdit))

它引发了一个错误:

'/'应用程序中的服务器错误。 编译错误 描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并适当修改源代码。

编译器错误消息:CS1977:在没有首先将其转换为委托或表达式树类型的情况下,不能将lambda表达式用作动态调度操作的参数

来源错误:

第95行:.ShowFileList(true) 第96行:.TemplateId(“fileTemplate”) 第97行:.Async(a =&gt; a 第98行:。保存(“SaveAttachment”,“附件”,新{evaluationId = ViewBag.EvaluationId,questionId = item.QuestionId}) 第99行:。删除(“RemoveAttachment”,“Attachment”,new {evaluationId = ViewBag.EvaluationId,questionId = item.QuestionId})

有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

首先投射ViewBag变量。

.Enable(bool.Parse((字符串)ViewBag.AllowEdit))

答案 1 :(得分:1)

使用Kendo上传控件需要注意的一点是,即使禁用了用户,用户仍然可以将文件拖放到其上。有一种方法可以始终禁用拖放:kendo forum

我没有尝试这种解决方法,因为我想在启用控件时允许它。