如何在通过 kendo.upload 和 MVC 中的表单上传文件后调用 javascript?

How to call javascript after file upload via kendo.upload and Form in MVC?

我正在尝试提交一个表单,其中一个属性是文件列表。

ActionResult 成功完成后,我需要显示必须通过 Javascript 触发的成功消息。

如果我使用 Ajax.Begin 形式显示 javascript 消息,但文件不会发送到 ActionResult,另一方面,如果我使用 Html.BeginForm 文件已发送,但我无法调用 javascript 函数,因此我'我无法触发我的成功消息。

这是我的观点:

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, 
        new { id = "exceptionForm", enctype = "multipart/form-data" }))
{
   @Html.TextAreaFor(m => m.Notes)
   @(Html.Kendo().Upload()
   .Name("EventFiles")
   )
   <div >
      <button href="#">
      submit
      </button>
   </div>
}

我的行动

[HttpPost]
public ActionResult Action(Model model)
{
   //do something
   result = new BaseJsonData();
   result.HasCompletedSuccessfully = true;
   return this.Json(result);
}

我的模型

public class EventModel
{
   public string Notes { get; set; }
   public IEnumerable<HttpPostedFileBase> EventFiles { get; set; }
}

我的javascript:

onSuccess: function (data) {
     if (data.HasCompletedSuccessfully) {
      //show message extention
     }
}

提前致谢:)

施文斯

你必须直接使用Telerik控件的异步模式:

.CSHTML

@(Html.Kendo().Upload()
            .Name("files")
            .Async(a => a
                .Save("Save", "Upload")
                .Remove("Remove", "Upload")
                .AutoUpload(true)
            )
            .Events(events => events
                .Success("onSuccess")
                .Error("onError")
            )
        )

Javascript:

<script>
    function onSuccess(e) {
        alert("Success (" + e.operation + ")");
    }

    function onError(e) {
        alert("Error (" + e.operation + ")");
    }      
</script>

Telerik 文档中提供了更多信息:

经过一些挖掘和尝试一些方法后,我找到了这个解决方案:

我下载了这个插件:

http://jquery.malsup.com/form/#download

安装后,我添加了这个javascript功能:

$('#exceptionForm').ajaxForm({
  complete: function (response) {
    var data = response.responseJSON;
    if (data.HasCompletedSuccessfully) {
            //warning message
    }
})

而且效果非常好。 感谢您的帮助:)