asp.net Core Get 请求 使用[FromBody]BillDetailRequest request, [FromQuery] BillDetailRequest sss

[FromBody] 获取body里传的 json数据,此方法是fiddler中的方式, 代码不知如何已body方式打包提交给后端

[FromQuery] 获取url后面的携带参数,ajax 采用querystring方式提交(ajax中data的内容经ajax打包到url后)

[FromHeader] 也能获取url后面的携带参数

asp.net MVC 使用[FromUri]

jquery ajax常用参数:
$.ajax({
    url: "http://cloud.keji01.com/",  //ajax请求地址修改成自己的
    cache: false,//(默认: true,dataType为script和jsonp时默认为false)设置为 false 将不缓存此页面,建议使用默认
    type:"GET",//请求方式 "POST" 或 "GET", 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
    dataType:"json",    //根据返回数据类型可以有这些类型可选:xml html script json jsonp text
    //发送到服务器的数据,可以直接传对象{a:0,b:1},如果是get请求会自动拼接到url后面,如:&a=0&b=1
    //如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 "&foo=bar1&foo=bar2"。
    data:{},
    //发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 事件。如果返回false可以取消本次ajax请求。
    beforeSend:function(xhr){
        //this 默认为调用本次AJAX请求时传递的options参数
    },
    //context这个对象用于设置ajax相关回调函数的上下文。也就是说,让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次AJAX请求时传递的options参数)。
    //比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM元素。
    context: document.body,
    //请求成功后的回调函数
    success: function(data,textStatus){
        //this 调用本次AJAX请求时传递的options参数 ,如果设置context来改变了this,那这里的this就是改变过的
    },
    //请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。
    //如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。
    error:function(XMLHttpRequest, textStatus, errorThrown){
        // 通常 textStatus 和 errorThrown 之中
        // 只有一个会包含信息
        // this 调用本次AJAX请求时传递的options参数
    },
    //请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述成功请求类型的字符串
    complete:function(XMLHttpRequest, textStatus) {
        //this 调用本次AJAX请求时传递的options参数
    },
    //一组数值的HTTP代码和函数对象,当响应时调用了相应的代码。例如,如果响应状态是404,将触发以下警报:
    statusCode:{
        404:function(){
            alert('404,页面不存在');
        }
    }
});
jquery ajax发送一个get请求,数据返回为json
$.ajax({
    type: "GET", //POST请求就是改成POST
    url: "page.php", //原文:http://www.51xuediannao.com/javascript/jquery_ajax.html
    dataType:'json',  //如果返回的是json这里要是 json
    data: {id:1001},//也可以是字符串链接"id=1001",建议用对象
    success: function(data){
        console.log("返回的数据: " + data );
    }
});
jquery ajax发送一个get请求,简写方式:
//$.get("请求url","发送的数据对象","成功回调","返回数据类型");
//云桌面http://cloud.keji01.com/测试用的url请换成你的真实地址
$.get("http://cloud.keji01.com/",{ name: "John", time: "2pm" },
   function(data){
      alert("Data Loaded: " + data);
},'json');
 jquery ajax发送一个post请求,简写方式:
//$.get("请求url","发送的数据对象","成功回调","返回数据类型");
$.post("test.cgi",{ name: "John", time: "2pm" },
   function(data){
      alert("Data Loaded: " + data);
},'json');

1.上传图片

/// <summary>
        /// 测试automap
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost("UpdateImage")]
        public string UpdateImage(IFormCollection formfile)
        {
            if (Request.Form.Files.Count < 1)
            {
                return "";
            }
            var fina = ContentDispositionHeaderValue
                                .Parse(Request.Form.Files[0]?.ContentDisposition)
                                .FileName
                                .Trim('"');
            var st = formfile.Files[0].OpenReadStream();
            //var st = Request.Form.Files[0].OpenReadStream();
            var path = ImgUploaderClient.UploadImage(Request.Form.Files[0]?.FileName, st);
            return path;
        }

2.导出excel

/// <summary>
        /// 对账明细导出
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpGet]
        public ActionResult BillDetailExportExcel([FromQuery]BillDetailRequest request)
        {
            NpoiMemoryStream stream = null;
            try
            {
                if (request == null)
                {
                    stream = new NpoiMemoryStream();
                    return File(stream, "application/ms-excel",
                        $"对账明细_{DateTime.Now.ToString("yyyyMMddHHmmssff")}.xlsx");
                }

                request.PageSize = 10000;
                request.PageIndex = 1;
                var list = new POPSupplierService().BillDetail(request);
                if (list == null || list.Body == null || list.Body.Records == null || !list.Body.Records.List.Any())
                {
                    stream = new NpoiMemoryStream();
                    return File(stream, "application/ms-excel",
                        $"对账明细_{DateTime.Now.ToString("yyyyMMddHHmmssff")}.xlsx");
                }


                List<BillDetailExport> exportList = new List<BillDetailExport>();
                foreach (var item in list.Body.Records.List)
                {

                    var exportModel = new BillDetailExport()
                    {
                        事件类型=item.EventName,
                        创建时间=item.CreateTime,
                        商品名=item.GoodsName,
                        收支类型=item.TypeName,
                        状态=item.StatusName,
                        订单号=item.OrderSerialId,
                        金额=item.Amount,
                        项目名称=item.ProjectCodeName
                    };
                    exportList.Add(exportModel);
                }

                stream = ExcelHelper.ListToExecl(exportList);
                stream.Seek(0, 0);
                return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                    $"对账明细_{DateTime.Now.ToString("yyyyMMddHHmmssff")}.xlsx");
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
            }
        }