Filter in ASP.NET MVC
摘要:在Asp.net MVC中,filter为cross-cutting concerns提供一个简单的实现方式。它共有4类Filter: 下边分别来讲述。 1. Authorization Filter Authorize filter可以用于action: [Authorize(Users="adam,steve,bob",Roles="admin")]publicActionResultIndex()也可以直接用于controller: [Authorize(Roles="Trader")]publicclassAdminContr
阅读全文
Model Binding in ASP.NET MVC
摘要:Request被处理到ActionInvoker时,ActionInvoker找到目标Action,方法列表的参数是怎么传递的? 这就需要理解Model Binding过程了。 看一个普通的action: publicViewResultPerson(intid) {varmyPerson=newPerson();returnView(myPerson); }请求http://mydomain.com/Home/Person/1 经过Route系统解析后,执行到Person。id的参数值解析过程为: Request.Form["id"] -> RouteData.Va
阅读全文
Controller Extensibility in ASP.NET MVC
摘要:在Asp.net MVC中,一个request过来后,mvc framework是怎么处理的:一个请求过来,经过Route系统的处理后, 它会找出适合request的controller和action的名称。注意,这个时候仅仅是找到了它的名称,那它怎么去创建对应的Controller,并调用action呢? 1. Controller Factory: 所有的Controller Factory都要实现IControllerFactory接口: publicinterfaceIControllerFactory{IControllerCreateController(Reques...
阅读全文
Unobtrusive Ajax in Asp.net MVC
摘要:讲述怎么使用Unobtrusive Ajax之前,先看在Asp.net MVC传统情况下怎么来实现一个下拉框联动效果: 1. 简单的定义一个model: publicclassAppointment{publicstringClientName{get;set;}[DataType(DataType.Date)]publicDateTimeDate{get;set;}publicboolTermsAccepted{get;set;}} 2. controller和action的实现: index.cshtml:@modelstring@{ViewBag.Title="Index&qu
阅读全文
Urls, Routing and Area in Asp.net MVC
摘要:本文着重讲述Asp.net MVC的路由配置,url灵活动态输出以及Area的使用。 一、路由配置:这里忽略VS2010给默认生成的Route,按照先易后难的顺序来讲解。 在讲解route之前,先说一下url segment的概念。如对于url:http://mydomain.com/admin/index它的segment有2个。第一个是admin,第二个是index。基于segment,关于Route匹配规则,有3点特征:1)保守,它只匹配包含相同个数segment的url(Route配置中有默认值或者是optional的例外);2)开明,只要segment个数相同,它就接纳...
阅读全文
Model Validation in Asp.net MVC
摘要:本文用于记录Pro ASP.NET MVC 3 Framework中阐述的数据验证的方式。 先说服务器端的吧。最简单的一种方式自然是直接在Action方法中来进行了,如下: [HttpPost]publicViewResultMakeBooking(Appointmentappt){if(String.IsNullOrWhiteSpace(appt.ClientName)){ModelState.AddModelError("ClientName","Pleaseenteryourname");}if(ModelState.IsValidField(&q
阅读全文
HttpRuntime.Cache vs. HttpContext.Current.Cache
摘要:Here's a development tip I came across on one of the ASP.NET discussion lists I'm on, atAspAdvice.com.Original question:Is there a difference in accessing the Cache of an application when calling HttpRuntime.Cache vs. HttpContext.Current.Cache? I "think" I remember reading about a
阅读全文