C# 使用REST上载文件时文件数据为空

C# 使用REST上载文件时文件数据为空,c#,asp.net-mvc,jquery,rest,file-upload,C#,Asp.net Mvc,Jquery,Rest,File Upload,我有以下代码 self.upload = function (file) { var path = $('#fileUpload').val(); var fr= new FileReader(); var ID = JSON.stringify({ ID:23, Name: file.name, Type: file.type,

我有以下代码

self.upload = function (file) {
            var path = $('#fileUpload').val();
           var fr= new FileReader();
            var ID = JSON.stringify({
               ID:23,
               Name: file.name,
               Type: file.type,
               Size: file.size,
               Path: path,
               data:fr.readAsDataURL(file),


            });

            $.ajax({
                cache: false,
                url: "http://localhost:49589/api/files",
                type: "POST",
                dataType: "json",
                data: ID,
                contentType: "application/json; charset=utf-8",
                processData: false,
                success: function (json) {
                            alert("Data Returned: " + JSON.stringify(json));
                        },
                error: function (json) {
                alert("error" + JSON.stringify(json));
            }

            });
我正在执行文件上传。我的控制器是

[HttpPost]
        public string upload(filesUpload f)
        {

            byte[] jj = f.data; // **getting null here** 
            string givenId = f.Path;
            return givenId;

        }
当我执行这个并上传一个文件时,我得到的是空文件数据。其中filesUpload是我的型号

我的代码出了什么问题。我正在为viwe和drundal SPA框架使用Knockout.js


还有别的办法吗。请帮助我以异步方式读取文件,并且不返回任何内容。您应该首先开始读取文件,然后捕获fr.onload事件,然后从这里创建json对象并调用ajax

upd:代码如下所示:

    self.upload = function (file) {
               var path = $('#fileUpload').val();
               var fr= new FileReader();
               fr.onload = function (frEvent) {
                     var ID = JSON.stringify({
                     ID:23,
                     Name: file.name,
                     Type: file.type,
                     Size: file.size,
                     Path: path,
                     data:frEvent.target.result,
                    });

                    $.ajax({
                      cache: false,
                      url: "http://localhost:49589/api/files",
                      type: "POST",
                      dataType: "json",
                      data: ID,
                      contentType: "application/json; charset=utf-8",
                      processData: false,
                      success: function (json) {
                                alert("Data Returned: " + JSON.stringify(json));
                            },
                      error: function (json) {
                       alert("error" + JSON.stringify(json));
                      }
                    });
                   };
                 fr.readAsDataURL(file);
            };
data:fr.readAsDataURL(文件),
有额外的逗号,可能会有问题