Edi Wang

Azure Developer, Microsoft MVP

All Posts


高效程序猿之(二)VS2010优秀插件

上一讲介绍了VS2010的模板代码生成。今天我们来看一下VS2010的插件功能。优秀的插件可以显著提高程序猿的生成效率。这个是2010版的新功能,用户可以通过安装插件来拓展Visual Studio的功能。 在VS2010的菜单上,你可以找到Extension Manager的按钮,点击以后会弹出浏览和安装插件的对话框。 我们可以去在线的库中寻找插件。在线安装完成后需要重启VS才能生效。如果安装的是本地插件,则要关闭VS后再安装,不然也是要重启的。 下面介绍几个我常用的插件。 1. Indent Guides 这款插件的作用是给代码块增加对齐线,以标识匹配的花括号,让程序猿很容易的找到对应的语句块。 2. PowerCommands for Visual Studio 2010 这是微软官方的插件,它可以给你的右键菜单增加很多实用的功能。比如对整个Project整理using、复制引用 …

Visual Studio Plugin Productivity

高效程序猿之(一)VS2010快速生成代码模板

一只程序猿的生产效率很重要。生成效率高了,老板喜欢你,妹子崇拜你,你也可以给自己节省很多时间。 加班的一般都是新手程序猿,除了对语言和技术不熟悉,工具也是很影响生成效率的因素。我们知道,猿和其他动物最大的区别在于,猿会使用工具。所以这一系列我将介绍一下如何用好手头的工具来帮助我们提高效率。 今天我们来看看如何在Visual Studio 2010中用内置的模板快速生成代码片段。 代码模板就是预先定义好的一个代码片段。VS中,我们只要输入模板的名称,然后连按两下TAB,VS就可以给我们把代码片段补充完整。 下面列出的这些都是VS2010的预置代码片段 流程控制语句估计大家都知道,这是最常用的“两下tab”: 关键词 生成 for for(int i = 0; i foreach foreach ( …

Visual Studio Template

LINQ to List泛型的几种简单查询

最近比较喜欢LINQ,真是碉堡了。下面写了个例子演示一下LINQ对List的操作,包括排序、where条件、选部分数据等查询。最近偷懒,不写注释了,大家自己看一下就明白了~ 测试用的BLL和Model public class TestBLL { public List GetList() { return new List() { new TestModel(){ Id=1, Name="RYWE", Content="IOJADJ", Posttime=DateTime.Now.AddHours(1) }, new TestModel(){ Id=2, Name="JGFA", Content="CAFYRE", Posttime=DateTime.Now.AddHours(0) }, …

LINQ List Generics

TinyMCE syntaxhl插入代码后换行的修改

上次搞了个整合insert code的TinyMCE编辑器,非常好用。但有一个缺点:每次插入代码后,光标都会停留在pre标记里面,打回车出不来,必须编辑HTML,在pre后面加个换行,然后才能回到可视化界面里继续编辑博客。如果博客里要插入的代码片段很多,就会非常不爽。所以今天给它做了个小修改。 打开plugins\syntaxhl\js\dialog.js 定位到41行,找到标记。这是预格式化标签的结尾标记。所以只要在它后面插入一个段落标记,即可让光标跳出我们插入的代码片段。插件的作者在41行后加了个bug注释,所以不敢贸然写在的后面,所以我们换一行,把 拼接上。 现在我们插入代码后,光标就不会卡在pre里面了~OH YEAH! 有图有真相:

TinyMCE

LINQ to XML CRUD,并且封装为DAL方法

LINQ非常牛逼,操作数据库和集合对象非常方便,已经得到了非常广泛的应用。好处我不多说了。今天来给大家看看LINQ对XML的增删改查操作,并且封装为DAL类,方便在多层结构的应用程序中使用。以我网站的友情链接模块为例: XML文件的结构如下: 1 XNA Develop http://www.xnadevelop.com/ 1 2 BlogNT 开源.NET博客 http://www.blognt.com/ 2  和以往写ORM一样,我们首先要把对数据的描述抽象为model: public sealed class FriendLink { private int _id; private string _title; private string _ …

CRUD DAL LINQ XML

几种常用的代码重构手法

最近看了Martin Fowler的著作《Refactoring: Improving the Design of Existing Code》收获颇大。书上的例子都是Java写的,其实我们同样可以运用在其他语言中,现在做.NET开发的话,用的最多的就是Visual Studio,它自带的重构功能可以很方便的整理代码。 重构的好处不多叙述了,大家都明白。书上论述的非常详细,我挑选几种最常用的重构方法,并用C#语言做示例,帮助大家了解必要的重构手法。另外,我也会附上一些自己平时在编程中常用的重构片段,但未必是100%正确或最好的。 1.Extract Method (提取函数) 样例代码: public void PrintOwing(double amount) { PrintBanner(); // print details Console.WriteLine("name:" + …

C# Coding Refactor

ASP.NET List泛型分页代码

2011.11.13修正: 1. 改正页数计算方法,以前的计算公式遇到整除就会多一页 2. 重发关键代码,以前因为编辑器的原因,部分代码会被过滤 3. 新增“转到[]页”功能 我们以前做ASP.NET网站,通常是把DataSet绑定到显示控件上,再用各种手段进行分页,比如PagedDataSource。然而,如果你是从业务层取数据,通常是一个List,这个时候就不能用以往的方法分页了。 一种办法是用ObjectDataSource,绑定GridView、ListView就可以分页,但如果遇到DataList或Repeater,就得自己写分页了。下面是我昨天写的List泛型分页Demo,有图有真相: 下面发代码: List泛型分页通用类: /// /// 泛型分页类 /// /// 类型 public class ListPager : List { …

ASP.NET List Generics

C#数据结构之顺序表SqList

最近在公司On Bench比较蛋疼,正好手头有本《C#数据结构》,拿来复习一下数据结构。以前大学里都是用C语言写的,C#从来没试过,毕竟C#本身就带有很多数据结构的Class可以直接拿来用。出于实验性目的,我还是看着书用C#写了几个demo。书上有些错误我也一并修正了。接下来发的代码都是经过测试可以正常运行的~DAY1.顺序表最近博客系统有点BUG,代码中如果有三条杠注释就会排版混乱,所以抱歉这次不能带注释了。IListDs接口:public interface IListDs {     void Clear();     void Append(T item);     void Insert(T item, int i);     T Delete(int i);     T GetElement(int i);     int Locate(T value); } …

C# Data Structure

ASP.NET中URL重写和Session冲突的问题

今天在改博客系统的一个Bug的时候,程序里用了Session,结果一跑就报错:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true  时,才能使用会话状态。还请确保在应用程序配置的  \\ 节中包括  System.Web.SessionStateMod 或自定义会话状态模块。然而用VS自带的Web Server调试一点问题都没有。唯独在IIS下跑的时候老报错,错误语句就是那行用了Session的程序。唯一的区别就是VS下调试时,URL没有重写。于是我回到IIS上,用完整的URL试了下,果然木有问题。我所使用的是URLRewriter.dll,似乎是当年微软提供的,经过一番查找,似乎有很多人和我有同样的问题,不管他们用的是不是URLRewriter.dll。奇怪的是,并不是每个版本的IIS都会丢Session。我本机和网站服务器用的是IIS7, …

ASP.NET Session URL Rewrite

ASP.NET用控件连接Access2010数据库报错的解决方法

今天想把网站的数据库换成2010(.accdb)格式的,但不知道主机服务商是否支持。于是想做个页面先测试一下。为了图方便,我用Access2010建立好测试用的数据库后,在VS里用拖DataSource控件的方法建了一个测试页面。VS里一切正常,可以识别数据库的内容。但网页一运行就报错:OleDbException (0x80004005): 不可识别的数据库格式。但通过编程的方式来指定provider就行。 经过一番研究发现,Access 2007或2010已经不能用AccessDataSource控件来连接了。必须使用SqlDataSource,但有些地方要做些改动: 1. 拖个SqlDataSource进来,然后选择配置数据源: 2.点击[新建连接]后,选择你的accdb数据库,数据源应该会自动适配为OLE DB。 3.选择高级,将Provider属性修改为Microsoft. …

ASP.NET