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

如何在MVC中通过kendo.upload和Form上传文件后调用javascript?,javascript,c#,asp.net,asp.net-mvc,kendo-upload,Javascript,C#,Asp.net,Asp.net Mvc,Kendo Upload,我试图提交一个表单,其中一个属性是文件列表 在ActionResult成功完成后,我需要显示一条必须通过Javascript触发的成功消息 如果使用Ajax.Begin form,则会显示javascript消息,但不会将文件发送到ActionResult;另一方面,如果使用Html.Begin,则会发送文件,但无法调用javascript函数,因此无法触发成功消息 以下是我的看法: @using (Html.BeginForm("Action", "Controller", FormMetho

我试图提交一个表单,其中一个属性是文件列表

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

如果使用Ajax.Begin form,则会显示javascript消息,但不会将文件发送到ActionResult;另一方面,如果使用Html.Begin,则会发送文件,但无法调用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>
}
我的模型

public class EventModel
{
   public string Notes { get; set; }
   public IEnumerable<HttpPostedFileBase> EventFiles { get; set; }
}
提前感谢:


Schewns

您必须直接使用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:

onSuccess: function (data) {
     if (data.HasCompletedSuccessfully) {
      //show message extention
     }
}
<script>
    function onSuccess(e) {
        alert("Success (" + e.operation + ")");
    }

    function onError(e) {
        alert("Error (" + e.operation + ")");
    }      
</script>
Telerik文档中提供了更多信息:


经过一些挖掘和尝试,我选择了以下解决方案:

我下载了这个插件:

安装后,我添加了以下javascript函数:

$('#exceptionForm').ajaxForm({
  complete: function (response) {
    var data = response.responseJSON;
    if (data.HasCompletedSuccessfully) {
            //warning message
    }
})
它就像一个符咒。
感谢您的帮助:

尝试在声明@Html.Kendo.Upload.Name'EventFiles.EventsonComplete中添加一个事件。事件完成并在javascript中创建一个onComplete函数,该函数将在上传完成后调用。问题是我只想在点击submit后提交表单,就像每次我上传表格时它都会提交一样:我现在就发布答案,我知道了
$('#exceptionForm').ajaxForm({
  complete: function (response) {
    var data = response.responseJSON;
    if (data.HasCompletedSuccessfully) {
            //warning message
    }
})