BootstarpInputFile参数

theme: "fas" //主题 可选explorer  explorer-fa explorer-fas fa fas gly
language: "zh"//语言,需加载语言文件 js/locales/zh.js
allowedFileExtensions: ['pdf', 'doc','docx','xlsx','pptx','xls', 'ppt', 'zip', 'mp3','rar'],//允许类型
uploadExtraData:{}//上传额外信息
hideThumbnailContent:true //隐藏缩略图图片,比如上传非图片时没有预览图
showCaption:true //显示标题,非预览图上的
dropZoneEnabled: false,//不显示拖拽区域
uploadAsync: true,//是否异步上传 同步上传:文件列表以一个队列的形式传入后台,进行一次请求,异步上传:每一个文件都会触发一次上传,另外此项设置为true的时候,fileuploaded才可以触发。
overwriteInitial: false,//不覆盖已存在文件,已经选择了文件,重新选择不被覆盖之前已选择的
showRemove: false,//是否显示删除按钮,非预览图上的
showUpload:false,//是否显示上传按钮,非预览图上的
initialPreviewAsData: true //如果选择true,返回数据返回文件名类似1.jpg的内容,生成内容为<img src="1.jpg">,选择false,需要直接返回<img src="">类似代码
browseOnZoneClick: true,//是否在单击预览区域时启用文件浏览/选择
layoutTemplates: {
            actionDrag: '',//下面拖动按钮取消
            actionZoom:''//不显示缩略图上的放大按钮
        },
browseClass: "btn btn-success",//浏览按钮

webapi 直接输出图片

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(ms.ToArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result ; 

网上的代码基本上都是这样的 但是api的请求结果是Json

{"Version":{"Major":1,"Minor":1,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"Content":{"Headers":[{"Key":"Content-Type","Value":["image/jpg"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}

最终结果,输入图片 使用IAcitonResult ,返回子类FileContentResult,直接输出图片

public IActionResult GetQr(string str)
{
    var img = LIB.QR.GetQrCode(str);
    MemoryStream ms = new MemoryStream();
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    return new FileContentResult(ms.ToArray(), "image/png");
}

关于导航属性的几点

var context = _context.Feedback.OrderByDescending(a=>a.AddTime);
[NotMapped]
Public User User{get;set;}

此时,_context.Feedback.Include(“User”),无法获取User

如果不加[NotMapped],以上代码获取到不为null的User,比如UserId=0,此时整条记录将不再显示。

asp.net core

Asp.Net Core Web API 参数

//多参数传递
[HttpPost]
public IActionResult Post(string a,string b)
{}
//ajax不可设置为contentType: "application/json;",不设置
//ajax data直接传入JSON对象data:{ "a": "1", "b": "2" }或者data:"a=1&b=2"
//传递参数名和接受的参数名必须一致
如果public IActionResult Post(string a),那么传值data: { "": "Jim" },a的值就是jim
前端传入data: {a:["11","22","33"]},后端接收public IActionResult Sort(string[] a)
//JSON对象传递,只能传递一个参数, js如下设置
//ajax contentType: "application/json;", 设置之后变成了Request Payload
//ajax JSON.stringify(data),需要转化为JSON字符串
//后台只接收一个参数,类型为dynamic、object、model
//后台必须使用[FromBody]
[HttpPost]
public IActionResult Post([FromBody]dynamic d)
public IActionResult Post([FromBody]object d)
public IActionResult Post([FromBody]model d)

asp.net core mvc ActionFilter 不继续执行下面的代码

在mvc的过滤器里面,执行相关的控制器之前,会先执行ActionFilter里面的代码,比如登陆时候,在执行admin/list的时候 先执行actionfilter里的代码,若果需要跳转,可以写成

context.HttpContext.Response.Redirect("/admin/login")

但是这样的问题,在于此时跳转后,会继续执行admin/list的代码,这是我们不希望的,改成

context.Result = new Microsoft.AspNetCore.Mvc.RedirectResult("/admin/login/");

这样程序将直接跳转,不会执行下面的请求

asp.net core iis apppoll 登陆失败解决方案

之前asp.net的时候都没有出过问题,用了asp.net core之后配置数据库连接总是有问题,总结了一下:

1、网站应用程序池选择Local System 。

2、数据库登录用户设置映射 public和db_owner

3、此时在通常情况下都没有问题,但是asp.net core出问题,最重要的一点,用数据库管理员登陆,查看登录名NT AUTHORITY\SYSTEM的权限,用户映射要给当前数据库 的public和db_owner ,这样才可以

总结:如果应用程序池选择NetWorkService,那么设置数据库中的NT AUTHORITY\NETWORK SERVICE的权限,如果没有这个用户,添加即可