代码改变世界

随笔分类 -  MVC

Asp.net MVC验证那些事(1)-- 介绍和验证规则使用

2013-12-17 08:33 by JustRun, 3432 阅读, 收藏, 编辑
摘要: 数据的有效性验证,是程序开发中必不可少的环节。这篇文章,我们将用一个实例来说明如何在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 阅读, 收藏, 编辑
摘要: 接上文.Net Attribute详解(上)-Attribute本质以及一个简单示例,这篇文章介绍一个非常实用的例子,相信你一定能够用到你正在开发的项目中。枚举类型被常常用到项目中,如果要使用枚举ToString方法直接输出字符串, 常常不是我们想要的输出,因为它是安装定义的名称输出字符串。比如你有一个性别枚举,有Man, Woman. 你在中文系统中,在创建用户的页面上,这个枚举代表的下拉框,当然不是显示Man和Woman的,而是要显示”男”和”女“。 下面就介绍如何使用Attribute非常方便的输出我们想要的字符串。1, 使用System.ComponentModel.Descripti 阅读全文

美国快递跟踪链接

2013-11-19 17:20 by JustRun, 918 阅读, 收藏, 编辑
摘要: 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... 阅读全文

Asp.net MVC中提交集合对象,实现Model绑定

2013-11-17 10:32 by JustRun, 3877 阅读, 收藏, 编辑
摘要: Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现。有时候我们的Action方法中想要接收数组类型的参数,如何写表单,使得Model能够自动绑定到数组参数上呢?看下面的代码,Action方法UpdateStudents就需要IEnumerable类型的参数,用来批量更新Student数据。[HttpPost] public ActionResult UpdateStudents(IEnumerable students) { //....save }上面是一个非常典型的应用场景, 如... 阅读全文

使用Web.Config Transformation配置灵活的配置文件

2013-11-12 08:08 by JustRun, 5735 阅读, 收藏, 编辑
摘要: 发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等。如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻烦的事情。Web.Config Transformation能够在不同的发布环境下,产生不同的web.config文件,非常方便和实用。阅读目录:一、Web.Config Transformation二、一个实际的例子三、Web.Config Transformation具体语法一. Web.Config Transformation项目中有个默认的web.config, 还可以定义格式为web. 阅读全文

Lazy<T>在Entity Framework中的性能优化实践(附源码)

2013-10-27 18:12 by JustRun, 5635 阅读, 收藏, 编辑
摘要: 在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问。只有当你使用到导航属性的时候,才会访问数据库。但是这个只是对于单个实体而言,而不适用于显示列表数据的情况。这篇文章介绍的是,使用Lazy来提高显示列表页面的效率。这里是相关的源代码 PerformanceTest.zip阅读目录:一、问题的描述二、数据表和EF实体介绍三、lazy load的性能四、使用StudentExtensionRepository来提高效率五、进一步改进,使用StudentExtensionRepository1来实现按需访问数据库六、总结一,问题的描述在使用EF的过程中,导航属性的l 阅读全文

菜鸟程序员之Asp.net MVC Session过期异常的处理

2013-10-19 11:14 by JustRun, 8642 阅读, 收藏, 编辑
摘要: 小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动手也了很多代码。现在毕业了,他如愿的加入了T公司,开始了自己的程序员生涯。他信心满满,相信自己4年的学习到的东西,一定能够在工作派上用场,帮助自己很快的胜任现在的工作。阅读目录:一、Session引发的异常二、使用MVC中的Filter来对Session进行验证三、对于Ajax请求的中,Session失效的处理四、处理Session过期异常的重要性一, Session引发的异常小赵刚进公司,就参与到了一个实际的项目中了,项目使用的是Asp.net MVC。花了大概2个周的时间,小赵就完成了所有功能,提交给 阅读全文

MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息

2013-10-15 08:00 by JustRun, 2642 阅读, 收藏, 编辑
摘要: Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLength等)。但是常常有这样的需求,我们希望能够把model的验证规则,保存到数据或者xml文件中,而不是代码里, 这样的好处是,我们可以很方便的修改验证规则和错误消息,避免需要重新发布网站。这篇文章,一起来看看是如何通过自定义ModelValidatorProvider来通过XML文件配置对于Model的验证。阅读目录:一、简单回顾内置MVC验证的使用二、分析MVC验证的内部过程三、一个例子,针 阅读全文

Asp.net MVC使用Model Binding解除Session, Cookie等依赖

2013-09-04 18:59 by JustRun, 3369 阅读, 收藏, 编辑
摘要: 上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖。其实这个也可以通过Model Binding来达到同样的效果。什么是Model Binding?Model Binding的作用就是将Request请求中包含的散乱参数,根据接受请求的Action方法的参数列表,自动智能地构建这些参数的过程。问题分析常见的对于Session依赖的代码:public ActionResult Index(){ var user = Session[“UserAccuont”];// 阅读全文

Asp.net MVC使用Filter解除Session, Cookie等依赖

2013-08-24 11:43 by JustRun, 9057 阅读, 收藏, 编辑
摘要: 本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景。 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖。如果大家有什么好的Filter应用方法,希望一起多交流。阅读目录:一、Filter在MVC生命周期中的位置二、Filter常见的应用场景三、Filter的执行顺序四、MVC中常见的对于Session, Cookie的依赖五、使用Filter解除依赖1. Filter在MVC生命周期中的位置下面的图中, 一个完成的MVC的生命周期分为5个步骤, 对应图例中的1~5IIS中传递请求到程序MVC根据Routing来 阅读全文

Entity Framework返回IEnumerable还是IQueryable?

2013-08-15 23:02 by JustRun, 7027 阅读, 收藏, 编辑
摘要: 在使用EF的过程中,我们常常使用repository模式,本文就在repository层的返回值是IEnumerable类型还是IQueryable进行探讨。阅读目录:一、什么是Repository模式?二、IEnumerable还是IQueryable的区别三、实际检验IEnumerable和IQueryable的效率差别四、总结一, 什么是Repository模式?Repository是隔离在数据访问层和业务逻辑层之间的。它提供业务逻辑各种对象,使得业务逻辑代码不需要关心数据是如何存储和获取的。下图,是MVC中使用Repository模式的模型图。Controller调用Repositor 阅读全文

Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)

2013-08-10 00:22 by JustRun, 4121 阅读, 收藏, 编辑
摘要: 上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现出来如下特性:唯一性: 在一个Context的生命周期中,一个Entity只会有一个实例,任何对该实例的修改,即使这些改动没有保存到数据库中,修改都会影响到整个Context的生命周期。事务性: 所有对于Entity的修改,都会在调用SaveChange方法的时候,一起保存到数据库中,最终实现持久化。下面基于EF的上面特点,分析一下为什么需要在MVC中实现One Context Per Reque 阅读全文

为Asp.net MVC中的RenderSection设置默认内容

2013-08-01 23:45 by JustRun, 7630 阅读, 收藏, 编辑
摘要: 1. RenderSection的简单介绍Asp.net MVC中提供了RenderSection方法,这样就能够在Layout中定义一些区块,这些区块留给使用Layout的view来实现比如我们定义的Layout如下, 定义了一个”Footer”的section, 把这个section留给各个view去填充。 Sample Layout @RenderBody() @RenderSection("Footer") 在使用该Layout的view中,可以这样来填充“Footer” section.@{ ... 阅读全文

使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)

2013-07-28 11:42 by JustRun, 4744 阅读, 收藏, 编辑
摘要: 在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数。这里介绍一下如何给Asp.net MVC和Entity Framework也添加上性能监控,让你在开发过程中随时掌握当前程序运行的信息。这里是在Autofac+MVC+EF篇的源码基础上,一步一步的介绍添加Profiler的过程。如果有兴趣了解Autofac的应用,可以看这里 IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)最终源代码在这里 MiniProfiler 阅读全文

Asp.net mvc中的Ajax处理

2013-06-18 22:54 by JustRun, 3777 阅读, 收藏, 编辑
摘要: 在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper。这篇文章不对具体如何使用做详细说明,只对于在使用Ajax中的一些需要注意或者容易忽略的细节问题做下总结.1. 注意ajax请求是同步还是异步的默认的Jquery中的Ajax请求是异步的,但是在一些特殊的场景下,我们需要同步的ajax请求,也可以说是阻塞式的ajax请求。比如在付款或者操作时间过长的ajax请求时,不希望用户操作时,就要用到同步ajax请求在Jquery中使用ajax方法时,将async属性设置成False, 就是同步的ajax请求了$.ajax({ 阅读全文

Asp.net MVC - 使用PRG模式(附源码)

2013-04-18 19:03 by JustRun, 1974 阅读, 收藏, 编辑
摘要: 阅读目录:一、 传统的Asp.net页面问题二、Asp.net MVC中也存在同样的问题三、使用PRG模式四、PRG模式在MVC上的实现一. 传统的Asp.net页面问题一个传统的Asp.net页面的请求会是这样的: HTTP GET 请求"Register.aspx" HTTP POST 请求 "Register.aspx"(点击按钮等触发服务器端事件) 数据检验失败, 重新返回到"Register.aspx" 在HTTP POST到"Register.aspx" 数据创建成功, 重新返回到"Regis 阅读全文

如何扩展Orchard

2013-04-12 08:37 by JustRun, 1192 阅读, 收藏, 编辑
摘要: 翻译自:http://msdn.microsoft.com/en-us/magazine/hh708754.aspx动态类型系统Content item是Orchard中的原子, 比如blog post, pages, products, widgets探索Content item原子作为开发者,我们首先会想到Content item是一个类的实例(比如blog post类), 类中包含了property, method等. 实际的Content item不是由简单类型的属性等组成的, 而是由content part组成,这是Orchard中的重要概念.一个blog post典型的由URL, 阅读全文

推荐博客文章

2013-04-09 13:54 by JustRun, 2921 阅读, 收藏, 编辑
摘要: 这里是一些个人感觉本博客里比较值得一看的文章。开发和常用工具推荐清单.Net基础枚举类型转换成字符串Math.Round和四舍五入关于DateTime和String转换的容易犯得错误C#只允许运行应用程序的一个实例的正确写法.net中的对象序列化(1): 序列化是什么, 以及一个简单的例子.net中... 阅读全文

在Winform,Silvelight,WPF等程序中访问Asp.net MVC web api

2012-11-08 19:53 by JustRun, 1646 阅读, 收藏, 编辑
摘要: Asp.net mvc 4中出现的web api是用来实现REST.关于什么是REST,可以看这里http://zh.wikipedia.org/zh/REST通过ajax等访问 web api非常方便,但是如何在Winform, Silverlight等访问web api呢?通过搜索,发现了已经有人做过这个东西了,就是RestSharp.http://restsharp.org/https://github.com/restsharp/RestSharpRestSharp不只是访问web api, 访问其他平台的Rest API也是一样。看看介绍的使用,无论是post数据,文件,格式化返回数 阅读全文

Asp.net MVC中repository和service的区别

2012-10-21 21:12 by JustRun, 3841 阅读, 收藏, 编辑
摘要: 在Asp.net MVC controller的底层,常常有提到repository和service layer, 好像都是逻辑相关的层,那么它们到底是什么区别呢?简单的说:repository就是一个管理数据持久层的,它负责数据的CRUD(Create, Read, Update, Delete)service layer是业务逻辑层,它常常需要访问repository层,但是它不关心数据是如何获取和存储的。 阅读全文