.Net Core跨域配置 1、在Startup的ConfigureServices中配置如下代码,注意要配置在AddMvc()之前。 services.AddCors(options => { options.AddPolicy("allow_all", builder => { builder.AllowAnyOrigin() //允...
ASP.NET MVC导出PDF 主要步骤: 1、传递需要打印的html内容 2、后台将html内容转换成PDF内容 3、转换后生成文件流下载使用解析组件:iTextSharp程序包管理控制器执行安装命令,也可以直接Nuget包管理器安装。 Install-Package iTextSharp Install-Package itextsharp.xmlworker页面:通过f...
ASP.NET MVC解析POST过来的数据,没有参数名称。 我们平时请求MVC Action的时候都会带上参数,比如string name,那么前台ajax传递的时候,指定参数name的值post过来就好了。但是有些情况下是没有参数的,有其他接口回调你的接口的时候就可能会有这样情况,没有请求参数,只会给你一串数据。这里我们需要解析请求的流,转换成我们需要的数据,一般是字符串,然后再进行自己的业务操作。Action中接收请求数据代码: ...
NPOI导出Excel添加单元格验证:下拉框,数字 需求描述:数据导出到Excel,新增对单元格的数据校验。如图:1、设置验证,首先要选择单元格的范围CellRangeAddressList cellRegions = new CellRangeAddressList(1, 65535, 1, 1); 范围表示:选择第2行到第65535行,第二列2、创建约束constraintXSSFDataValidationH...
web中切换详情信息和编辑功能 在web应用中,我们经常会查看某个数据详情,并且能编辑它,在同一个页面同一个区域中,不用再弹窗,具体描述可能不太清楚,请看效果图,这是之前做的一个商品的详情和编辑,现在记录一下:数据的绑定我是使用vue.js绑定的,比较方便,贴部分代码,其他类似: <td class="cyan">Sku编码</td> <td> <sp...
JWT-校验 JWT就相当于自己定义的Token,JWT是在服务端根据秘钥加密后生成的字符串,然后经过BASE64加密输出,现在前后端分离的web项目用的挺多的,根据自己的项目情况来。JWT字符串由三部分组成:header.payload.signature(header+payload+secret)这里就不再详细介绍了,直接看代码: class Program { static...
.Net Core 基础 - 读取配置文件 .Net Core 读取配置文件主要是通过IConfiguration,是.Net Core自动注入的,默认构造函数注入方式。1、Program控制台启动中添加Json配置文件 public static IWebHostBuilder CreateWebHostBuilder(string[] args) { return WebHost.C...
C# 队列Queue的使用 今天用到的C#内置的Queue队列来进行重试机制。基本的用法就是入队列:Enqueue、出队列:Dequeue接口拉取数据,接口可能不稳定会拉取失败,我将失败的记录存入了Queue然后进行重试,直到全部成功为止。Queue errorQueue = new Queue();//将所有失败的记录都存入队列errorQueue.Enqueue(param.PageNo);//然后进行重试,直到...
MySql远程登录失败 "Host is not allowed to connect to this MySQL server" 1.需要在阿里云开启3306 mysql服务端口2.配置账号的访问权限,如图:From Host:授权访问方式,localhost只能在服务器本机登录,%就可以所有IP访问了。为了安全性,可以分配一个账号,设置对应的previleges访问权限。...
linq to sql 动态拼接条件 遇到了一个比较特殊的查询(表没有设计好,也就是加一个字段能解决了),才发现了linq to sql 还可以这样的去动态的拼接where条件,不然也不会这样写,这里记录一下,代码如下: from bill in list join invoice in _invoiceAppService.Query() on bill.BillNo equals invoice.Bi...
MVC5路由改为小写、Route特性自定义Action路由 1.要想使用Route特性自定义Action名称,需要注册Mvc路由特性。在RouteConfig的RegisterRoutes方法里,调用:routes.MapMvcAttributeRoutes();这里需要注意的是,如果Controller继承了一个父Controller,且父类Controller中,有泛型方法,就会报错:“您不能调用控制器xxx上的xx方法,因为该方法是一种泛型方法。”如...
ASP.NET MVC、WebApi 设置返回Json为小驼峰命名 在ASP.NET MVC中,我们一般返回json数据,直接return Json(data)就可以了,但是C#字段命名规范是首字母大写,返回Json的时候就是直接序列化了指定的实体对象,就是大写了。这里自己创建一个JsonResult,继承JsonResult,重写一下ExecuteResult方法,利用Newtonsoft.Json格式化一下数据,再自定义写回到请求中。 public cl...
Autofac-ASP.NET MVC、WebApi 使用 1.安装Autofac包和Autofac.Integration.Mvc包,在global中进行注入: var builder = new ContainerBuilder(); //注册所有Controller builder.RegisterControllers(Assembly.GetExecutingAssembly(...
C# AutoMapper 利用特性进行实体间的映射 AutoMapper:6.2.2.0案例:UserDto和User实体之间的映射(User类除了Name拥有更多字段) [AutoMap(typeof(User))] public class UserDto { public string Name { get; set; } }最后直接使用:var userDto = userService.Find("0...
面向对象,设计模式进一步理解 设计模式,是前人总结的经验,在不同的场景里解决不同的问题,所以不应该“简单”的复制,不应该为了模式而模式,应该是灵活应用的。看了网上很多讲设计模式的,还有不少书籍也有,开始看的时候看不懂,再学了面向对象之后,发现那些例子(猫啊狗啊)什么的都可以看懂,但是,在具体的项目里面并不知道怎么去使用。所有的代码因项目而异,设计模式的那些套路,不一定适合你。之所以看不懂,是因为记那些概念太多了,还有就是代码量...
文本框oninput事件,在中文输入法状态多次触发 如图,在中文输入法状态中,还在检索拼音,这时事件就会触发,这不是我们想要的,xiaoqiu x,xi,xia,xiao....都会触发,这样频繁的请求会给接口造成挺大压力的。我们可以使用js里面防抖动的方式或DOM3的复合事件来解决此问题。回顾一下onchange和input事件: oninput事件在<input>或<textarea>元素的值发生改变时触发 o...
Linux CentOS 系统安装MQTT(Apache-apollo) 1.安装Apache-apollo 关于它的介绍,请参考:http://activemq.apache.org/apollo/index.html 它是从原始ActiveMQ的基础构建一个新的更快的,更可靠的,使用完全不同的线程和消息调度架构来实现的。Apollo是一个多协议的代理,支持MQTT,WebSockets等等。MQTT是本文要介绍到的。 1....
C# 操作redis 1.安装redis操作工具包,ServiceStack.Redis。2.在App.config/web.config配置Redis信息 <configSections> <section name="RedisConfig" type="redisDemo.redis.RedisConfig,redisDemo" /> </configSections&...
Linux CentOS 系统安装redis 1.下载redis安装包 wget http://download.redis.io/releases/redis-4.0.2.tar.gz2.make编译 根据Makefile文件编译源代码,连接,生成目标文件,可执行文件。3.make install 将编译成功的可执行文件安装到系统目录中,一般为 /usr/local/bin 目录4.编辑redis配置文件 vim /...
jQuery点击页面上某元素之外的地方进行指定操作 页面点击经常会有这样的需求,点击某元素之外的地方将指定元素给隐藏起来。如上图,需要点击页面中除下拉框区域(下拉树,文本框,下拉箭头)之外的元素,隐藏下拉框。页面元素点击事件绑定: $(document).on('click',':not(.combo_tree_panel)',function(){ $combotreePanel.hide();