雁过请留痕...
代码改变世界

随笔分类 -  .Net

[mvc] 过滤器filter一览

2018-05-07 17:11 by xiashengwang, 354 阅读, 收藏, 编辑
摘要: 1、mvc的过滤器种类 阅读全文

[mvc] 简单的forms认证

2018-05-07 17:09 by xiashengwang, 275 阅读, 收藏, 编辑
摘要: 1、在web.config的system.web节点增加authentication节点,定义如下: 2,新增AccountController。 3、Login.cshtml 4、浏览器输入http://localhost:44324/Account/Login,输入web.config中定义的用 阅读全文

依赖注入:Ninject学习笔记

2017-11-30 16:23 by xiashengwang, 4190 阅读, 收藏, 编辑
摘要: 依赖注入(DI)就不多说了,可以自行百度,本笔记整理自Pro ASP.NET MVC5。 1,Ninject安装 Ninject是一个开源的注入容器,可以通过VS的Nuget进行安装。由于是在mvc中应用,需要安装下面3个类库。 Ninject Ninject.Web.Common Ninject. 阅读全文

IIS7.5配置SSL

2016-11-30 16:50 by xiashengwang, 1963 阅读, 收藏, 编辑
摘要: 1,首先需要准备两个证书(CA证书,服务器证书)。 CA证书由公共的CA机构提供,widnow系统内部已经内置了很多这类证书,如图(日文系统)。 服务器证书是导入到IIS里面用的。 2,有了上面的认识,我们就开始准备这两个证书。 1)生成一个CSR文件(https://csr.chinassl.ne 阅读全文

【转】使用lockbits方法处理图像

2015-01-07 14:11 by xiashengwang, 873 阅读, 收藏, 编辑
摘要: 许多图像处理任务即时是最简单的文件类型转换,例如从32位深度到8位深度的格式转化,直接获得像素阵列要比使用GetPixel和SetPixel等方法的效率高得多。 你可能会发现DotNet采用托管机制,大多数情况下微软会推荐你使用托管代码,理由是便捷和安全。实际应用中,直接操作内存中的数据块是很少见的,尽管如此,图像处理恰恰是这类为数不多的情况之一,因为使用托管代码的效率低的难以忍受,特别是对巨幅图... 阅读全文

DataTable 行删除

2014-12-24 15:08 by xiashengwang, 4206 阅读, 收藏, 编辑
摘要: 今天在阅读一个项目中的代码时,发现删除DataTable的数据时用的dataTable.Clear(); 由于以前自己习惯都是用dataTable.Rows.Clear();因此突然感觉到很茫然,难道这两者有啥不一样?于是一阵百度,Bing搜索,在加上Reflector的帮助,结论如下:1,data... 阅读全文

接口与virtual,override,new关键字

2014-07-14 17:56 by xiashengwang, 1796 阅读, 收藏, 编辑
摘要: 一,类继承接口1,首先我们定义一个简单的ITeacher接口,并定义一个Professor类继承它。 public interface ITeacher { void Print(); } public class Pro... 阅读全文

控制WinForm中Tab键的跳转

2014-05-15 16:48 by xiashengwang, 8709 阅读, 收藏, 编辑
摘要: 一,需求在Winform中,默认情况下,按下Tab键,光标会按照我们设定的TabIndex值从小到大进行跳转。但如果用户要求按下Tab键跳转到特定的控件,这种要求还是很合理的,比如用户只想输入几个必须填的项目。我们可以在配置文件中配置这些必须填写的项目,并设定他们的跳转顺序。这样程序也更加灵活,利于... 阅读全文

Linq to Sql 动态条件另类实现方法

2014-03-07 14:23 by xiashengwang, 2122 阅读, 收藏, 编辑
摘要: 其实我也不知道是不是另类的,反正我找了好久园子里和其他资源。无外乎两类1,构造动态表达式的,这个真心繁琐,我是懒人,不想弄表达式。2,拼SQL语句,直接执行,这个和ado.net就没有啥区别了。我想继续用Linq,有不想用上面的两种方法,于是我测试了下面这种方法,结果完全符合预期,看看是怎么写的吧。记录在这里,以备查阅 var result = from s in ct.dbContext.LT_Survey join r in ct.dbContext.LT_Inquiry on s.InquiryCode... 阅读全文

协变(covariant)和逆变(contravariant)

2014-01-21 16:15 by xiashengwang, 722 阅读, 收藏, 编辑
摘要: 我们知道子类转换到父类,在C#中是能够隐式转换的。这种子类到父类的转换就是协变。而另外一种类似于父类转向子类的变换,可以简单的理解为“逆变”。上面对逆变的简单理解有些牵强,因为协变和逆变只能针对接口和代理类型。而父类和子类之间不存在这种逆变的概念。协变和逆变的本质都是子类安全的转到父类的过程。下面就来加深下印象,先定义两个类Car和Baoma public class Car { } public class Baoma : Car { }明显Baoma(宝马)是Car的子类1,先来看看协变协变在C#中要用out关键字标明,用这个关键字就表示参数T只能用于函... 阅读全文

枚举Enum和常量0之间的恩怨

2013-11-29 15:13 by xiashengwang, 2682 阅读, 收藏, 编辑
摘要: 1,任何为0的常量表达式都能隐式的转换成枚举Enum。对于这一点,在程序中没少吃苦头。特别是对于函数重载的情况,往往让人一头雾水。看看下面的代码(摘自MSDN),你能猜到输出吗?public enum E{ Zero = 0, One = 1,} class A{ public A(string s, object o) { System.Console.WriteLine("{0} => A(object)", s); } public A(string s, E e) { System.Console.WriteLine("{0} => A(Enu 阅读全文

Lamda表达式的参数捕获,太酷了

2013-11-28 11:22 by xiashengwang, 6373 阅读, 收藏, 编辑
摘要: lamda表达式有了参数捕获这个功能,让Action这个委托变得无所不能。Action委托就是无参数,无返回值的一个代理类型。它只能对应于下面这种类型的函数声明。 public void Function() { //Do something } public void Function2() { //Do something } public void Function3() { //Do something }假设我们定义一个共通的执行... 阅读全文

IIS7上传文件大小設定

2013-09-29 15:24 by xiashengwang, 465 阅读, 收藏, 编辑
摘要: 1、首先、修改Web.Config中的maxRequestLength、单位是KB;executionTimeout单位是秒。例:maxRequestLength=1024(1MB)executionTimeout=3600(60分) 2、上面设定好后、Web.Config的maxAllowedContentLength也必须要设定。单位:Byte、下面的例子设定大小为:1G。 注意:要使2的設定生效,要确保C:\Windows\System32\inetsrv\config\applicationhost.config中的下面的节点为“Allow”。modify the ov... 阅读全文

.Net中的内存分配问题

2013-09-29 15:13 by xiashengwang, 583 阅读, 收藏, 编辑
摘要: 最近在测试的时候,要求测试内存不足的情况。我不想去开很多的程序来占用内存,那样太麻烦了,也不太精确。于是就写一个小程序来占用内存,想法很简单,就是声明一个Byte数组在占用内存,没想到这么简单的想法却没能正常工作,出乎我的所料,经过一番折腾,终于搞清楚了原因。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows. 阅读全文

别误用IsDigit与IsNumber函数

2013-07-27 19:51 by xiashengwang, 21006 阅读, 收藏, 编辑
摘要: 1、起因最近发现程序中有一段控制TextBox数字输入的代码,相信大家都不会太陌生,如下: void int_KeyPress(object sender, KeyPressEventArgs e) { const char Delete = (char)8; if (!Char.IsDigit(e.KeyChar) && e.KeyChar != Delete) { e.Handled = true; } }乍一看,好像没有啥问题,但... 阅读全文

双行表头DatagridView的简单实现

2013-07-16 16:38 by xiashengwang, 6689 阅读, 收藏, 编辑
摘要: DatagridView默认不支持多行表头的实现,一些第三方的控件,比如Spread就可以,因此要实现这个功能,只能自己想办法了。介绍两种思路:1,用重写DataGridView的Paint等方法,可以重画表头,这个实现起来较为复杂,费时费力,此处略去。2,利用两个DataGridView,一个DataGridView用来显示第一行标题,另一个DatagridView用来显示第二行表头以及数据部分。实现中遇到一个问题,当列数很多的时候,第二个DatagridView会出现水平滚动条,拉动滚动条,第一个DatagridView并没有随着同步滚动,解决这个问题的方法是在第二个DatagridVie 阅读全文

VS2010 如何制作项目模板

2012-09-11 16:14 by xiashengwang, 4867 阅读, 收藏, 编辑
摘要: 模板的制作在vs2010中制作模板文件非常简单,直接点击菜单中的文件à保存为模板,就可以另存为工程模板或是项目模板了。保存选项里可以选择模板的图标。做好的模板需要放到下面这两个目录中:C:\Documents and Settings\wz\My Documents\Visual Studio 2010\Templates\ProjectTemplatesC:\Documents and Settings\wz\My Documents\Visual Studio 2010\Templates\ItemTemplates然后新建一个工程,你就发现这些模板已经可以用了。模板中参数使用注 阅读全文

Vs2010 sp1补丁太让人纠结

2012-09-08 12:18 by xiashengwang, 22702 阅读, 收藏, 编辑
摘要: 最近下载了vs2010的sp1补丁包,没看上这个补丁包的其他功能扩展,唯一看中的就是它对MSDN 查看器的更新。以前大家都知道vs2010的帮助文档要在浏览器里查看,由于没有了索引功能,简直太不习惯了。这个补丁包对此进行了升级,安装后可以像以前的VS2008 一样浏览帮助文档。我下载的是iso文件,差不多1.5G,本以为可以顺利安装,结果太悲催了,安装了一晚上还在那卡住(系统:Win7 32位旗舰版),于是取消,重新安装,还是卡住。按照网上的一个方法,将vs2010的setup文件改名后考到install目录下,那个卡住的地方是过了,结果又在后面的一个地方卡住,这个sp1包真是折腾死人,哥不陪 阅读全文

混合线程同步核心篇——自定义混合同步锁,Monitor,lock,ReaderWriterLockSlim・・・

2012-08-31 10:18 by xiashengwang, 2704 阅读, 收藏, 编辑
摘要: 前两篇博客,分别介绍了用户模式和内核模式的同步构造,由于它们各有优势和劣势。本文将介绍如何将这两者的优势结合在一起,构建一个性能良好的同步机制。一,实现一个简单的混合同步锁#region hybird lock/// /// 简单的混合同步锁/// private sealed class Hybi... 阅读全文

基元线程同步——内核模式构造(WaitHandle,EventWaitHandle,AutoResetEvent,ManualResetEvent,Semaphore,Mutex)

2012-08-29 17:46 by xiashengwang, 2805 阅读, 收藏, 编辑
摘要: 一、内核模式构造内核模式构造,采用的是windows操作系统来同步线程,比VolatileRead,VolatileWrite,Interlocked等用户模式的构造慢很多。相对于用户模式的构造,它也有自己的优点:1,不用像用户模式那样占着cpu“自旋”,浪费cpu资源。2,内核模式可同步在同一机器不同进程中运行的线程。3,可实现本地和托管线程相互之间的同步。4,一个线程可以一直阻塞,直到一个集合中的内核对象全部可用,或部分可用。(WaitAll,WaitAny)5,阻塞一个线程时,可以指定一个超时值,超过这个时间就解除阻塞。二、FCL提供的内核模式构造层次结构WaitHandle(抽象类) 阅读全文