摘要:Autofac结合EF在MVC中的使用,上一篇IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)已经介绍了。但是只是MVC中Controller实现了依赖注入。而在Filter中如何实现依赖的注入? 下面我们以Filter中如何... 阅读全文
韩非子中的管理故事 -- 明辨人才
2014-06-13 08:01 by JustRun, 2829 阅读, 8 推荐, 收藏, 编辑
摘要:原文:太公望东封于齐,齐东海上有居士曰狂矞、华士昆弟二人者立议曰:“吾不臣天子,不友诸侯,耕作而食之,掘井而饮之,吾无求于人也。无上之名,无君之禄,不事仕而事力。“太公望至于营丘,使吏执而杀之,以为首诛。周公旦从鲁闻之,发急传而问之曰:“夫二子,贤者也。今日飨国而杀贤者,何也?“太公望曰:“是昆弟二... 阅读全文
.Net开源网络爬虫Abot介绍
2014-05-31 11:21 by JustRun, 9685 阅读, 14 推荐, 收藏, 编辑
摘要:.Net中也有很多很多开源的爬虫工具,abot就是其中之一。Abot是一个开源的.net爬虫,速度快,易于使用和扩展。项目的地址是https://code.google.com/p/abot/对于爬取的Html,使用的分析工具是CsQuery, CsQuery可以算是.net中实现的Jquery, ... 阅读全文
单元测试中如何配置log4net
2014-05-23 08:53 by JustRun, 1081 阅读, 1 推荐, 收藏, 编辑
摘要:按道理来说,单元测试中基本没有对于日志的需求,这是由于单元测试的定位来决定的。因为单元测试的思想就是针对的都是小段代码的测试,逻辑明确,如果测试运行不通过,简单调试一下,就能很容易地排查问题。但是单元测试也是一个简便好用的的启动器。总不能调试任何代码,都要我启动一个Windows或者Web项目吧,这... 阅读全文
MVC, MVP, MVVM比较以及区别(下)
2014-05-14 14:01 by JustRun, 14375 阅读, 20 推荐, 收藏, 编辑
摘要:上一篇得到大家的关注,非常感谢。一些朋友评论中,希望快点出下一篇。由于自己对于这些模式的理解也是有限,所以这一篇来得迟了一些。对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己的观点,才能抛砖引玉不是? 欢迎各位拍砖。:)阅读目录:四.MVP模式 4.1MVP的思想 4.... 阅读全文
MVC, MVP, MVVM比较以及区别(上)
2014-04-22 10:03 by JustRun, 22262 阅读, 95 推荐, 收藏, 编辑
摘要:MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式。以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解。现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别。欢迎各位高手拍砖。 阅读全文
VS 2013中的新特性browser link
2014-04-11 08:51 by JustRun, 2883 阅读, 1 推荐, 收藏, 编辑
摘要:Browser Link是连接VS和浏览器之间的通道。有了这个特性,web程序就能够和VS交互传递数据。这个特性在VS2013中是默认开启的。当开启了Browser Link, web程序运行的时候,就会注册一个HttpModule到asp.net的生命周期中,这个HttpModule的功能就是在每个输出的网页中,注入一段脚本,这段脚本的作用就是负责VS IDE和网页间的通讯。 阅读全文
Asp.net MVC的Model Binder工作流程以及扩展方法(3) - DefaultModelBinder
2014-04-02 08:36 by JustRun, 2217 阅读, 3 推荐, 收藏, 编辑
摘要:Default Binder是MVC中的清道夫,把守着Model Binder中的最后一道防线。如果我们没有使用Custom Model Binder等特殊处理,那么Model的绑定都是有Default Binder处理的。这篇文章,一起看看Default Binder和如何扩展Default Binder.一,Default Binder的流程下面的图是Default Model Binder中的关键方法BindModel的代码逻辑图。ValueProvider是包装好的类似于字典容器,里面包含了所有request中能够获取到的值(无论是Form提交的,还是Querystring中的) 阅读全文
Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
2014-03-27 09:24 by JustRun, 1637 阅读, 4 推荐, 收藏, 编辑
摘要:上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参数,只要是类型A, 都会使用Custom Binder. 这篇文章将会介绍Binder Attribute方式扩展MVC的Model Binder, 这种方式更加的灵活和可操控。本篇文章参考了ModelBinder——ASP.NET MVC Model绑定的核心, 结合Artech的这篇文章,对于MVC的Model Binder一定能够理解的更加深刻 阅读全文
Asp.net MVC的Model Binder工作流程以及扩展方法(1) - Custom Model Binder
2014-03-19 08:02 by JustRun, 2446 阅读, 9 推荐, 收藏, 编辑
摘要:在Asp.net MVC中, Model Binder是生命周期中的一个非常重要的部分。搞清楚Model Binder的流程,能够帮助理解Model Binder的背后发生了什么。同时该系列文章会列举MVC中Model Binder的扩展点,以及如何使用这些扩展点。阅读目录:一.MVC中的Model Binder的工作流程二.继承IModelBinder, 实现CustomeBinder三.使用Custom Model Binder的弊端四.总结一, MVC中的Model Binder的工作流程在MVC中, 当一个请求发送到服务器,先是要经过Route匹配, 找到对应的Controller和A 阅读全文
Asp.net MVC验证那些事(4)-- 自定义验证特性
2014-03-10 07:54 by JustRun, 4764 阅读, 9 推荐, 收藏, 编辑
摘要:在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求。比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox往往是必填项,但是MVC中并没有提供对于checkbox必选的验证。这篇文章通过解决checkbox必选验证的问题,看看如何在MVC中定义自己的自定义验证属性。阅读目录:一.CheckBox必选验证的困局二.对于服务端ValidationAttribute的实现分析三.自定义EnforceTrueAttribute实现服务器端验证四.添加客户端验证五.总结一, CheckBox必选验证的困局先来引 阅读全文
在MVC中处理异常的总结
2014-02-21 07:53 by JustRun, 3796 阅读, 8 推荐, 收藏, 编辑
摘要:无论是桌面程序还是web程序,异常处理都是必须的. 一般的处理方式是, 捕获异常,然后记录异常的详细信息到文本文件或者数据库中.在Asp.net MVC中可以使用内建的filter——HandleError来处理程序发生的异常。接下来,来看看如何在我们的MVC项目中使用。要让HandleErrorAttribute特性工作,需要修改我们的Web.config文件配置...HandleErrorAttribute 特性能够在Action, Controller, 和Global 三个级别中使用1. 在 Action方法级别使用在Action方法上使用,非常简单,只需要在方法头上加上HandleE 阅读全文
Asp.net MVC Razor模板引擎技巧分享
2014-02-12 08:25 by JustRun, 8801 阅读, 27 推荐, 收藏, 编辑
摘要:Razor是Asp.net MVC中新的默认模板类型, 语法简单易用。这篇文章不涉及Razor的语法,主要介绍Razor的一些在MVC项目中的使用技巧,以及脱离MVC环境下,如何使用Razor.阅读目录:一、Razor和MVC关系二、MVC中扩展Razor寻找模板范围三、MVC中使用Razor生成Html片段四、脱离MVC, 使用Razor独立作为模板引擎五、其它1. Razor和MVC关系Razor是MVC中的默认模板引擎,MVC中还有ASPX模板引擎,在早期的MVC版本中,默认使用的是ASPX模板引擎。当默认添加一个View文件的时候,可以看到MVC默认带的2个模板引擎。你还可以引入其它的 阅读全文
理解C# 4 dynamic(4) – 让人惊艳的Clay
2014-01-22 07:27 by JustRun, 14717 阅读, 57 推荐, 收藏, 编辑
摘要:Clay非常类似于ExpandoObject, 可以看做是ExpandoObject的加强版. 它们能够让我们在不需要定义类的情况下,就构建出我们想要的对象。Clay和ExpandoObject相比,提供了更加灵活的语法支持,让我们像写javascript代码一样写C#代码,同时还能够用于构建多层级的复杂对象。阅读目录:一、多种方式初始化对象二、构建神奇的Array三、为对象动态添加方法四、动态的实现接口五、Clay的应用背景六、Clay的Sample一,多种方式初始化对象1, 最简单的对象构建和初始化dynamic New = new ClayFactory();var person = N 阅读全文
Asp.net MVC验证哪些事(3)-- Remote验证及其改进(附源码)
2014-01-04 18:10 by JustRun, 4352 阅读, 15 推荐, 收藏, 编辑
摘要:表单中的输入项,有些是固定的,不变的验证规则,比如字符长度,必填等。但有些是动态的,比如注册用户名是否存在这样的检查,这个需要访问服务器后台才能解决。这篇文章将会介绍MVC中如何使用【RemoteAttribute】来解决这类验证需求,同时会分析【RemoteAttribute】的不足,以及改进的方法.本文相关的源代码在这里 MVC-Remote-Validation.zip一, RemoteAttribute验证使用如果需要用户把整个表单填完后,提交到后台,然后才告诉用户说,“你注册的用户已经被占用了,请换一个用户名”,估计很多用户都可能要飚脏话了. MVC中的Remote验证是通过Ajax 阅读全文
Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
2013-12-31 09:20 by JustRun, 3093 阅读, 2 推荐, 收藏, 编辑
摘要:上篇文章Asp.net MVC验证那些事(1)-- 介绍和验证规则使用中,介绍了Asp.net MVC中的验证功能以及如何使用。这里将对MVC中内置的验证规则进行总结。一,查找所有验证规则上篇文章中提到,所有的验证规则都是位于下面的命名空间下:using System.ComponentModel.DataAnnotations;我们可以用ILSpy反编译工具,看看这个命名空间下都有些什么. 下面的图让我们一目了然,在这个命名空间下,.net为我们提供了那些验证规则。不过,有三点需要注意:1. 列出的类基本都是Attribute,如果不理解Attribute,可以看这里.Net Attribu 阅读全文
Asp.net MVC验证那些事(1)-- 介绍和验证规则使用
2013-12-17 08:33 by JustRun, 3432 阅读, 12 推荐, 收藏, 编辑
摘要:数据的有效性验证,是程序开发中必不可少的环节。这篇文章,我们将用一个实例来说明如何在MVC中使用Validation来保证无论是新增或者更新数据的时候,都必须符合我们定义的验证规则,否则就会提示错误。一, DRY原则DRY是Don’t repeat yourself的缩写,意思是不要写重复的代码。MVC中的Validation设计就是遵循了这个原则。 比如下面中的Movie类, 当用户在网页上填写Movie信息的时候,并保存的数据库中的时候, 由于Title是我们期望的必填项,所以:1. 在提交表单的时候,需要检查Title是否填写。如果没有,显示警告信息。2. 在保存到数据库中的时候,也需要 阅读全文
.Net Attribute详解(下) - 使用Attribute武装枚举类型
2013-12-10 08:18 by JustRun, 2805 阅读, 9 推荐, 收藏, 编辑
摘要:接上文.Net Attribute详解(上)-Attribute本质以及一个简单示例,这篇文章介绍一个非常实用的例子,相信你一定能够用到你正在开发的项目中。枚举类型被常常用到项目中,如果要使用枚举ToString方法直接输出字符串, 常常不是我们想要的输出,因为它是安装定义的名称输出字符串。比如你有一个性别枚举,有Man, Woman. 你在中文系统中,在创建用户的页面上,这个枚举代表的下拉框,当然不是显示Man和Woman的,而是要显示”男”和”女“。 下面就介绍如何使用Attribute非常方便的输出我们想要的字符串。1, 使用System.ComponentModel.Descripti 阅读全文
.Net Attribute详解(上)-Attribute本质以及一个简单示例
2013-11-27 08:10 by JustRun, 9388 阅读, 37 推荐, 收藏, 编辑
摘要:Attribute的直接翻译是属性,这和Property容易产生混淆,所以一般翻译成特性加以区分。Attribute常常的表现形式就是[AttributeName], 随意地添加在class, method的头上,然后就能够产生各种各样奇特的效果和行为。比如关于序列化的标签[Serializable]用来指定一个实体类可以序列化。[NonSerialized]可以用来指定某些属性不包含在序列化中。一, Attribute本质是什么?Attribute类似于标签, 可以为类,方法,结构体,属性,委托等贴上标签,在以后的实际执行时候,根据不同的标签做不同的处理。拿类做个比方,如果把一个类看做一个人 阅读全文
美国快递跟踪链接
2013-11-19 17:20 by JustRun, 918 阅读, 1 推荐, 收藏, 编辑
摘要:DHL http://www.dhl.com/content/g0/en/express/tracking.shtml?brand=DHL&AWB={tracking_number} Fedex http://www.fedex.com/Tracking?action=track&tracknumbers={tracking_number} UPS http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums={tracking_number} If any value is provided for t... 阅读全文