- 博客(111)
- 资源 (3)
- 收藏
- 关注
原创 .Net Core跨域配置
1、在Startup的ConfigureServices中配置如下代码,注意要配置在AddMvc()之前。 services.AddCors(options => { options.AddPolicy("allow_all", builder => { builder.AllowAnyOrigin() //允...
2018-09-03 11:00:06
2898
1
原创 ASP.NET MVC导出PDF
主要步骤: 1、传递需要打印的html内容 2、后台将html内容转换成PDF内容 3、转换后生成文件流下载使用解析组件:iTextSharp程序包管理控制器执行安装命令,也可以直接Nuget包管理器安装。 Install-Package iTextSharp Install-Package itextsharp.xmlworker页面:通过f...
2018-08-14 15:56:50
7095
1
原创 ASP.NET MVC解析POST过来的数据,没有参数名称。
我们平时请求MVC Action的时候都会带上参数,比如string name,那么前台ajax传递的时候,指定参数name的值post过来就好了。但是有些情况下是没有参数的,有其他接口回调你的接口的时候就可能会有这样情况,没有请求参数,只会给你一串数据。这里我们需要解析请求的流,转换成我们需要的数据,一般是字符串,然后再进行自己的业务操作。Action中接收请求数据代码: ...
2018-08-02 21:45:44
4087
原创 NPOI导出Excel添加单元格验证:下拉框,数字
需求描述:数据导出到Excel,新增对单元格的数据校验。如图:1、设置验证,首先要选择单元格的范围CellRangeAddressList cellRegions = new CellRangeAddressList(1, 65535, 1, 1); 范围表示:选择第2行到第65535行,第二列2、创建约束constraintXSSFDataValidationH...
2018-07-18 10:38:04
5318
原创 web中切换详情信息和编辑功能
在web应用中,我们经常会查看某个数据详情,并且能编辑它,在同一个页面同一个区域中,不用再弹窗,具体描述可能不太清楚,请看效果图,这是之前做的一个商品的详情和编辑,现在记录一下:数据的绑定我是使用vue.js绑定的,比较方便,贴部分代码,其他类似: <td class="cyan">Sku编码</td> <td> <sp...
2018-07-13 09:55:55
1198
原创 JWT-校验
JWT就相当于自己定义的Token,JWT是在服务端根据秘钥加密后生成的字符串,然后经过BASE64加密输出,现在前后端分离的web项目用的挺多的,根据自己的项目情况来。JWT字符串由三部分组成:header.payload.signature(header+payload+secret)这里就不再详细介绍了,直接看代码: class Program { static...
2018-07-12 16:08:39
1571
原创 .Net Core 基础 - 读取配置文件
.Net Core 读取配置文件主要是通过IConfiguration,是.Net Core自动注入的,默认构造函数注入方式。1、Program控制台启动中添加Json配置文件 public static IWebHostBuilder CreateWebHostBuilder(string[] args) { return WebHost.C...
2018-07-03 18:05:21
1520
原创 C# 队列Queue的使用
今天用到的C#内置的Queue队列来进行重试机制。基本的用法就是入队列:Enqueue、出队列:Dequeue接口拉取数据,接口可能不稳定会拉取失败,我将失败的记录存入了Queue然后进行重试,直到全部成功为止。Queue errorQueue = new Queue();//将所有失败的记录都存入队列errorQueue.Enqueue(param.PageNo);//然后进行重试,直到...
2018-06-21 21:46:57
8574
原创 MySql远程登录失败 "Host is not allowed to connect to this MySQL server"
1.需要在阿里云开启3306 mysql服务端口2.配置账号的访问权限,如图:From Host:授权访问方式,localhost只能在服务器本机登录,%就可以所有IP访问了。为了安全性,可以分配一个账号,设置对应的previleges访问权限。...
2018-05-21 16:10:38
482
原创 linq to sql 动态拼接条件
遇到了一个比较特殊的查询(表没有设计好,也就是加一个字段能解决了),才发现了linq to sql 还可以这样的去动态的拼接where条件,不然也不会这样写,这里记录一下,代码如下: from bill in list join invoice in _invoiceAppService.Query() on bill.BillNo equals invoice.Bi...
2018-05-09 16:43:17
3024
原创 MVC5路由改为小写、Route特性自定义Action路由
1.要想使用Route特性自定义Action名称,需要注册Mvc路由特性。在RouteConfig的RegisterRoutes方法里,调用:routes.MapMvcAttributeRoutes();这里需要注意的是,如果Controller继承了一个父Controller,且父类Controller中,有泛型方法,就会报错:“您不能调用控制器xxx上的xx方法,因为该方法是一种泛型方法。”如...
2018-05-04 21:53:17
2056
原创 ASP.NET MVC、WebApi 设置返回Json为小驼峰命名
在ASP.NET MVC中,我们一般返回json数据,直接return Json(data)就可以了,但是C#字段命名规范是首字母大写,返回Json的时候就是直接序列化了指定的实体对象,就是大写了。这里自己创建一个JsonResult,继承JsonResult,重写一下ExecuteResult方法,利用Newtonsoft.Json格式化一下数据,再自定义写回到请求中。 public cl...
2018-05-02 18:01:54
6086
原创 Autofac-ASP.NET MVC、WebApi 使用
1.安装Autofac包和Autofac.Integration.Mvc包,在global中进行注入: var builder = new ContainerBuilder(); //注册所有Controller builder.RegisterControllers(Assembly.GetExecutingAssembly(...
2018-04-27 19:23:59
517
原创 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...
2018-04-26 19:04:31
6561
原创 面向对象,设计模式进一步理解
设计模式,是前人总结的经验,在不同的场景里解决不同的问题,所以不应该“简单”的复制,不应该为了模式而模式,应该是灵活应用的。看了网上很多讲设计模式的,还有不少书籍也有,开始看的时候看不懂,再学了面向对象之后,发现那些例子(猫啊狗啊)什么的都可以看懂,但是,在具体的项目里面并不知道怎么去使用。所有的代码因项目而异,设计模式的那些套路,不一定适合你。之所以看不懂,是因为记那些概念太多了,还有就是代码量...
2018-04-16 15:15:07
1450
原创 文本框oninput事件,在中文输入法状态多次触发
如图,在中文输入法状态中,还在检索拼音,这时事件就会触发,这不是我们想要的,xiaoqiu x,xi,xia,xiao....都会触发,这样频繁的请求会给接口造成挺大压力的。我们可以使用js里面防抖动的方式或DOM3的复合事件来解决此问题。回顾一下onchange和input事件: oninput事件在<input>或<textarea>元素的值发生改变时触发 o...
2018-04-11 11:16:21
23034
4
原创 Linux CentOS 系统安装MQTT(Apache-apollo)
1.安装Apache-apollo 关于它的介绍,请参考:http://activemq.apache.org/apollo/index.html 它是从原始ActiveMQ的基础构建一个新的更快的,更可靠的,使用完全不同的线程和消息调度架构来实现的。Apollo是一个多协议的代理,支持MQTT,WebSockets等等。MQTT是本文要介绍到的。 1....
2018-03-21 16:01:07
5542
原创 C# 操作redis
1.安装redis操作工具包,ServiceStack.Redis。2.在App.config/web.config配置Redis信息 <configSections> <section name="RedisConfig" type="redisDemo.redis.RedisConfig,redisDemo" /> </configSections&...
2018-03-20 15:16:23
2035
原创 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 /...
2018-03-20 11:48:05
402
1
原创 jQuery点击页面上某元素之外的地方进行指定操作
页面点击经常会有这样的需求,点击某元素之外的地方将指定元素给隐藏起来。如上图,需要点击页面中除下拉框区域(下拉树,文本框,下拉箭头)之外的元素,隐藏下拉框。页面元素点击事件绑定: $(document).on('click',':not(.combo_tree_panel)',function(){ $combotreePanel.hide();
2018-02-07 10:35:44
12117
1
原创 Newtonsoft.Json序列化DateTime类型数据为字符串时候,带了一个T
字段:public DateTime ApplyDate {get;set;}序列化字符串后,值变成了"2018-02-05T00:00:00"序列化时候 需要更改一下日期转换方式:IsoDateTimeConverter timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss
2018-02-05 14:06:15
7554
原创 跨域:The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed
使用Ajax跨域请求资源,Nginx作为代理,出现:The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed 错误。服务端允许跨域配置: #region 设置允许跨域,允许复杂请求 HttpContext
2018-01-17 10:29:08
120700
11
原创 HttpClient异常:ProtocolViolationException
使用HttpClient进行Get请求的时候,发生了这个异常:ProtocolViolationException,无法发生具有此谓词类型的内容正文。代码如下: var reqMsg = new HttpRequestMessage { Method = httpItem.Method,
2018-01-10 16:39:09
3412
原创 Nginx配置-Ajax跨域请求方式为PUT,DELETE
后台API使用了RESTful Api的接口设计,前端页面这里使用了Nginx代理进行跨域调试。当请求方式是DELETE、PUT的时候,出现了405 Method not Allowed 错误,而且请求的方式变成了OPTIONS。配置所有跨域请求:add_header Access-Control-Allow-Origin *;但这里只支持简单的请求方式:GET,POST,OPTIONS,使用DE
2018-01-02 14:26:01
11131
原创 layui-form表单自定义监听多个select
layui一个表单中多个select下拉选择事件监听,官网的写法代码太冗余了,自己封装扩展一下,形成回调形式。由于保存了图片,直接看图说话吧。
2017-12-24 20:20:21
13072
原创 layui-select动态选种值
layui的select在form渲染后,会重新构造一份DOM数据,将原生的select元素隐藏了。我是使用的vue动态绑定的options,这里绑定v-model就失效了。我想编辑某行的时候,动态选中select的值。1.需要改变对应input的显示值。2.对应新构造的select中的值,layui-this样式标识选中。那么在table编辑的时候,代码如下:
2017-12-23 20:12:54
6403
原创 layer弹层遮罩挡住窗体解决
使用代码: 这里面某个按钮触发弹层 如果上面的按钮触发了弹层 layer.open 且content是某个DOM元素content:$('#dialog')那么这里弹出层,遮罩会遮住到弹窗导致操作不了。官网给出的说法是 如果弹层的内容content是某个DOM元素的话,要放在body的根节点下。不能放在div里面了。我看了html代码
2017-12-13 21:36:42
29655
11
原创 .NET后台接收Json数据,序列化到指定实体类
请求数据如下:使用Newtonsoft.Json来序列化,实体类定义:public class InputBase { /// /// 时间戳 /// [JsonProperty("timeStamp")] public string TimeStamp { get; set; }
2017-11-20 11:29:22
1170
原创 js去掉html字符串中的所有标签元素,结合vue表达式使用
1.没去掉之前,绑定的代码是:显示的效果是将对应的html元素也显示出来了,这里我只需要他的纯文本就好了, 不含任何格式(html代码):2.去掉html字符串中的所有标签元素js代码:function delHtmlTag(str){ return str.replace(/]+>/g,"");}3.vue绑定更改:4.只显示纯文本
2017-09-28 18:15:51
8394
3
原创 js滚动条保持在容器最底部
table容器高度,table内容是动态增加的 也就是动态变高的var tableHeight = $("#panel>table").height();<div id='panel' style='height:520px;overflow:auto'> div容器设置了高度,超过这个高度就让他出现纵向滚动条,滚动条保持在div容器最底部,计算一下里面的ta...
2017-09-21 16:06:20
10237
原创 vue.js移动数组位置,同时更新视图
使用vue.js v-for绑定若干个选项,需要对选项进行排序上下移动操作。需要对options里面数组的位置进行交换,通常是这样来写:假设向前移动一个:var index = this.options.indexOf(option); //获取当前选项对象在数组里面的索引。var tempOption = this.options[index-1]; //存储前一个
2017-09-12 16:52:01
7508
原创 easyui刷新指定tab页里面的数据
主页Home/Index中使用tab管理,在主页中设置一个刷新的方法。/** * 刷新指定的tab里面的数据 * @param title 选项卡标题 * @param refreshTabFunc 自定义的刷新方法(再各个页面具体实现) */function refreshTabData(title,refreshGridFunc){ if ($("#tabs" ).t
2017-09-08 11:04:56
8818
原创 Java上传Excel文件导入数据
Controller中接收form表单提交的文件域:public Map importConsumer(@RequestParam("file") MultipartFile file)读取Excel工具类 这里我以Consumer实体类来写,大家可以自行封装:public class ReadExcel{ // 总行数 private int totalRows = 0;
2017-08-31 21:52:22
3520
原创 DTO和POJO实体类之间值映射
package cn.test.util;import java.lang.reflect.Method;import java.util.List;public class AutoMapper{ public static void mapping(TSource source,TDestination destination) { Method[] srcMetho
2017-08-31 15:58:56
5359
1
原创 umeditor简洁富文本使用
一:引入umeditor对应的类库 二:创建对应的编辑器html区域,进行初始化设置等 UM.delEditor("headerTitleTip"); var editor = UM.getEditor('headerTitleTip', { initialFrameWidth: '100%', ini
2017-08-07 17:46:44
1905
1
原创 easyui的tree加载数据过滤匹配
easyui的tree的属性比较限制,他的valueField和textField对应的值必须是"id"和"name"。从接口获取的数据却是这样的,或者其他的,他规定的属性名称不能是其他,所以要过滤匹配一下,它内部提供了loadFilter过滤方法,我们根据规则来写:function FormatTreeData(data) { if (data == undefine
2017-07-24 14:57:56
2957
原创 textarea根据内容自动增加高度
js处理: function autoTextAreaHeight(o) { o.style.height = o.scrollTop + o.scrollHeight + "px"; } $(function () { var ele = document.getElementById("symptomTxt"); aut
2017-07-20 22:55:08
16508
1
原创 Css改变radio样式
结构: 红色css:.c_radio { height: 35px; line-height: 35px;}.c_radio > input { display: none;}.c_radio label { vertical-align: middle; line-height: 20px; disp
2017-06-15 13:39:02
5015
原创 js缓存变量,减少DOM操作开销
DOM是页面元素对象的体现,DOM是个树,每个DOM节点和其他节点有子父、兄弟关系,每次寻找的时候,都会一层层的去寻找,对于相同且已经查找过的节点,每次都去重新找,如果节点层级关系多了,性能就很低了。每次$()都会创建一个新的DOM对象。 在一个事件/区域内的this对象,就是代表事件调用本对象。如果每次使用到再重新去取,显然多余了。如果使用该对象频率高,应该吧变量缓存起来。不要再每次$(t
2017-06-14 17:22:02
1535
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人