2014-01-20 36 views
0

我正在使用Kendo与MVC 5.我有几个窗体输入,包括一个文件上传控件。点击一个按钮我正在用输入的值构建一个json对象并通过AJAX调用发送它。通过AJAX与JSON Kendo UI FileUpload

我想知道如何在发送的json对象中包含从文件上传控件中选择的文件。下面是上传控件的代码:

$(document).ready(function() { 
    $("#files").kendoUpload({ 
     multiple: false 
    }); 
}); 

然后Ajax调用发送表单数据:

var ro = new Object(); 
// ...... //populate some properties  
var jsonString = JSON.stringify(ro); 

$.ajax({ 
    url: '@Url.Action("Save", "Service")', 
    data: jsonString , 
    type: 'POST', 
    dataType: 'json', 
    contentType: 'application/json', 
}); 

接收控制器操作是这样的:

public ActionResult Save(MyViewModel model) 
{ 
    var obj = //call something here then return resulting obj 
    return this.Json(obj, JsonRequestBehavior.AllowGet); 
} 

任何帮助非常感谢。

+0

@ cmedine-你能做到这一点吗?您能否请您发布解决方案 –

+0

我无法使其工作并实施临时存储解决方案,并在应用程序重新启动时被清除。 – cmedine

回答

0

尝试

$("#files").kendoUpload({ 
      multiple: false, 
      async: { 
       saveUrl: '@Url.Action("Save", "Service")', 
       autoUpload: true 
      }, 
      upload: function (e) { 
       var ro = new Object(); 
       //......//populate some properties  

       var jsonString = JSON.stringify(ro); 
       e.data = jsonString; 
      } 
     }); 

在你的控制器:

public ActionResult Save(IEnumerable<HttpPostedFileBase> files, string model) 
      // string because you used JSON.stringify and it is a string, do not stringify, if you need an object 
     { 
      var js = new JavaScriptSerializer(); 
      var objetModel = js.Deserialize<MyViewModel>(model);    

      var obj = //call something here then return resulting obj 

      return Json(obj, JsonRequestBehavior.AllowGet); 

     } 

我没有测试它 - 它只是让你的想法如何与上传的二进制文件

一起传递的附加信息
+0

但是,感谢上传控件没有使用异步 - 我不想上传任何东西,直到他们选择提交 – cmedine