ASP.NET MVC CodePlex Preview 4 Installer + Source + Changed

下载连接

Pv3-Codeplex Pv4之间的差异:
ViewPage
ViewPage类
增加了InitHelpers方法

Controller
Controller类
 新实现了IAuthorizationFilter/IExceptionFilter接口
添加了 public ITempDataProvider TempDataProvider { get; set; } 属性
ControllerActionInvoker类
新增加了四个方法:
FilterInfo GetFiltersForActionMethod(MethodInfo methodInfo);
ResultExecutedContext InvokeActionResultWithFilters(ActionResult actionResult, IList<IResultFilter>
filters);
AuthorizationContext InvokeAuthorizationFilters(MethodInfo methodInfo, IList<IAuthorizationFilter>
filters);
ExceptionContext InvokeExceptionFilters(Exception exception, IList<IExceptionFilter> filters);
删除了原有的:
IList<IActionFilter> GetActionFiltersForMember(MemberInfo memberInfo);
IList<IActionFilter> GetAllActionFilters(MethodInfo methodInfo);
ResultExecutedContext InvokeActionResultWithFilters(ActionResult actionResult, IList<IActionFilter>
filters);
ControllerBuilder 类
增加了属性public HashSet<String> DefaultNamespaces { get; }
ExceptionContext类
这是一个新增加的类,我想,可以用来输出美化的异常处理,呵呵

public class ExceptionContext : ControllerContext 
        public ExceptionContext(ControllerContext controllerContext, Exception exception); 
 
        public ActionResult Result { get; set; } 
        public Boolean ExceptionHandled { get; set; } 
        public Exception Exception { get; } 
}

属性编程与Filter中
IActionFilter接口
删除了以下两个事件
void OnResultExecuted(ResultExecutedContext filterContext);
void OnResultExecuting(ResultExecutingContext filterContext);

ActionExecutedContext类的构造函数改为
ActionExecutedContext(ControllerContext controllerContext, MethodInfo actionMethod, Boolean canceled, Exception
exception)
增加了public Boolean Canceled { get; }只读属性

ActionFilterAttribute 类
由继承于Attribute 改为继承于FilterAttribute,另外增加实现IResultFilter接口
删除了 Order 属性

另外新增加了几个类,有关用Action的Filter

public abstract class FilterAttribute : Attribute 
        protected FilterAttribute(); 
 
        public Int32 Order { get; set; } 
    } 
 
    public class FilterInfo 
        public FilterInfo(); 
 
        public IList<IActionFilter> ActionFilters { get; set; } 
        public IList<IAuthorizationFilter> AuthorizationFilters { get; set; } 
        public IList<IExceptionFilter> ExceptionFilters { get; set; } 
        public IList<IResultFilter> ResultFilters { get; set; } 
    } 
 
    public sealed class HandleErrorAttribute : FilterAttribute, IExceptionFilter 
        public HandleErrorAttribute(); 
 
        public String View { get; set; } 
        public Type ExceptionType { get; set; } 
   } 
 
    public class HandleErrorInfo 
        public HandleErrorInfo(Exception exception, String controller, String action); 
 
        public Exception Exception { get; } 
        public String Action { get; } 
        public String Controller { get; } 
    } 
 
    public class HttpUnauthorizedResult : ActionResult 
        public HttpUnauthorizedResult(); 
    }

还有一些我看来比较有用的类

public interface IAuthorizationFilter { //用来获取用户信息的FIlter接口
        void OnAuthorization(AuthorizationContext filterContext); 
    } 
 
    public interface IExceptionFilter { //用来获取异常的FIlter接口
        void OnException(ExceptionContext filterContext); 
    } 
 
    public enum InsertionMode { //感觉有点像触发器的感觉 ,这个Enum所标志的那个类一定很好用呵呵 
        Replace, 
        InsertBefore, 
        InsertAfter 
    } 
 
    public interface IResultFilter { //这个应该是新的Filter接口
        void OnResultExecuted(ResultExecutedContext filterContext); 
        void OnResultExecuting(ResultExecutingContext filterContext); 
    } 
 
    public interface ITempDataProvider 
        TempDataDictionary LoadTempData(); 
        void SaveTempData(TempDataDictionary tempDataDictionary); 
    }

对于Helper中
AjaxExtensions静态类
是新增加的,代码如下:

public static class AjaxExtensions { 
        public static Boolean IsMvcAjaxRequest(HttpRequestBase request); 
    }

LinkExtensions类
Mailto方法都被删除了
AjaxHelper类
这个算是改动最大添加了一些比较有用的实现

public class AjaxHelper 
        public String ActionLink(String linkText, String actionName, AjaxOptions ajaxOptions); 
        public String ActionLink(String linkText, String actionName, String controllerName, AjaxOptions ajaxOptions); 
        public String ActionLink(String linkText, String actionName, Object values, AjaxOptions ajaxOptions); 
        public String ActionLink(String linkText, String actionName, RouteValueDictionary values, AjaxOptions ajaxOptions); 
        public String ActionLink(String linkText, String actionName, String controllerName, RouteValueDictionary values, 
AjaxOptions ajaxOptions); 
        public String ActionLink(String linkText, String actionName, Object values, AjaxOptions ajaxOptions, Object 
htmlAttributes); 
        public String ActionLink(String linkText, String actionName, RouteValueDictionary values, AjaxOptions ajaxOptions, 
IDictionary<String,Object> htmlAttributes); 
public String ActionLink(String linkText, String actionName, String controllerName, Object values, AjaxOptions 
ajaxOptions); 
        public String ActionLink(String linkText, String actionName, String controllerName, RouteValueDictionary values, 
AjaxOptions ajaxOptions, IDictionary<String,Object> htmlAttributes); 
        public String ActionLink(String linkText, String actionName, String controllerName, Object values, AjaxOptions 
ajaxOptions, Object htmlAttributes); 
        public IDisposable Form(String actionName, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, Object values, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, RouteValueDictionary values, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, String controllerName, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, String controllerName, RouteValueDictionary values, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, Object values, AjaxOptions ajaxOptions, Object htmlAttributes); 
        public IDisposable Form(String actionName, RouteValueDictionary values, AjaxOptions ajaxOptions, 
IDictionary<String,Object> htmlAttributes); 
        public IDisposable Form(String actionName, String controllerName, Object values, AjaxOptions ajaxOptions); 
        public IDisposable Form(String actionName, String controllerName, Object values, AjaxOptions ajaxOptions, Object 
htmlAttributes); 
        public IDisposable Form(String actionName, String controllerName, RouteValueDictionary valuesDictionary, AjaxOptions 
ajaxOptions, IDictionary<String,Object> htmlAttributes); 
    }

另外因此而增加了一些对AjaxHelper辅助的类

public class AjaxOptions 
        public AjaxOptions(); 
 
        public InsertionMode InsertionMode { get; set; } 
        public String OnBegin { get; set; } 
        public String OnFailure { get; set; } 
        public String OnSuccess { get; set; } 
        public String UpdateTargetId { get; set; } 
    }

存储系统
TempDataDictionary 类
设置为可以序列化
添加了Load和Save方法,并给了一个可以反序列化初始化的构造函数
ViewDataDictionary类
增加了个public Object Eval(String expression); 方法

MemberShip
对于微软自己的角色控制,有2个类被添加

public class AuthorizationContext : ControllerContext { //看来是用来在Membership得到Action信息
        public AuthorizationContext(ControllerContext controllerContext, MethodInfo actionMethod); 
 
        public ActionResult Result { get; set; } 
        public Boolean Cancel { get; set; } 
        public MethodInfo ActionMethod { get; } 
    } 
public sealed class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter { //这个是在Controller中获取用户信息的应该是的,呵呵
        public AuthorizeAttribute(); 
 
        public String Roles { get; set; } 
        public String Users { get; set; } 
    }

新功能
MVC的缓存

public class MvcHttpHandler : UrlRoutingHandler, IRequiresSessionState 
        public MvcHttpHandler(); 
    } 
 
    public sealed class OutputCacheAttribute : ActionFilterAttribute, IActionFilter, IResultFilter { //明显就是一个缓存的Filter呵呵
        public OutputCacheAttribute(); 
 
        public Boolean NoStore { get; set; } 
        public Int32 Duration { get; set; } 
        public OutputCacheLocation Location { get; set; } 
        public String CacheProfile { get; set; } 
        public String VaryByContentEncoding { get; set; } 
        public String VaryByCustom { get; set; } 
        public String VaryByHeader { get; set; } 
        public String VaryByParam { get; set; } 
  }

删除 的类
    public static class ButtonBuilder; // removed
    public static class ButtonsAndLinkExtensions; // removed
    public class ComponentController; // removed
    public static class ImageBuilder; // removed
    public static class ImageExtensions; // removed
    public static class ViewExtensions; // removed

时间: 2024-10-26 23:04:23

ASP.NET MVC CodePlex Preview 4 Installer + Source + Changed的相关文章

Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型

本文的环境是Asp.net Mvc Codeplex Preview 5 前文提到我们可以使用 Controller中的UpdateModel来获取 繁杂类型 例如 1 UpdateModel(x,Request.Form.AllKeys); 但是这里有些问题,当我们使用Request.Form.AllKeys时,提交的数据中有非x属性时,就会发生错误: The model of type 'MyModel' does not have a property named 'Name2'. 但是使

Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性

Asp.net Mvc Codeplex Preview 5是Asp.net Mvc的一个过渡版本,它包含了一些新特性. Pv5对于Helper的更改基本集中在HtmlHelper.对于简单的使用,我基本一带而过,如果朋友们有什么不明白,可以留言. AttributeEncode提供了HtmlAttributeEncode功能 使用方法 <%=Html.AttributeEncode("<script src=\"j.js\"></script>

Asp.net Mvc Codeplex Preview 5 第二篇 Controller&amp;Filter的新特性

    下载:http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16775 上篇: Asp.net Mvc Codeplex Preview 5 第一篇 Helper的新特性     BindingHelperExtensions.UpdateFrom改为UpdateModel 使用方法(缺点:如果表单里存在MyModel里不存在的字段就会报错) var x = new MyModel();this.Try

Asp.net Mvc Codeplex Preview 5 源代码及MVCContrib4pv5发布

刚刚抽些时间上网就发现Asp.net Mvc Codeplex Preview 5的源码发布了. Asp.net Mvc Codeplex Preview 5已经发布了几天,发布时就说源代码整理中 下面是源代码的下载. http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16775   随之MVCContrib的Pv5版本也发布了. http://www.codeplex.com/MVCContrib/Rel

Asp.net Mvc Codeplex Preview 5 第二篇 Controller&amp;amp;Filter

BindingHelperExtensions.UpdateFrom改为UpdateModel 使用方法(缺点:如果表单里存在MyModel里不存在的字段就会报错) var x = new MyModel(); this.TryUpdateModel(x, Request.Form.AllKeys); 或(缺点:一个一个写太麻烦) var x = new MyModel(); this.TryUpdateModel(x, new[] {"IDX", "Name"})

ASP.NET AJAX CodePlex Preview 3的代码解析

忙了半个月,现在终于闲下来了,有时间写博,感觉真爽!刚刚看到有人想一起研究ASP.NET AJAX CodePlex Preview 3的帖子,正好前段时间小研究了下.Preview3就出了两个JS(MicrosoftAjaxAdoNet.js和MicrosoftAjaxTemplates.js). 这里先介绍下MicrosoftAjaxAdoNet类库,对于它的介绍在MS提供的文档中都说明了.这里只是解析下代码,并一起讨论下.先放一张这个类库中的类关系图上来 下面看下它的基础类: AdoNet

ASP.NET MVC Framework 系列

序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现实. 本文只想让大家更直观地认知ASP.NET MVC,如果语言有所不当,还望大家海涵.当然,如果文中有所纰漏还希望大家及时指出,我也好做及时的修改.在下本着对初学者负责的态度来书写本系列中的各篇文章,但期间的恒心与毅力相信过来的人更加明白,所以如果书写有误希望大家谅解. ASP.NET MVC 正

ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问 WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也没 什么大的差别. 在ASP.NET应用程序里使用ASP.NET AJAX访问WebService通常都是通过 ScriptMananger引入WebService生成客户端代理的方法,同时也可以使用 Microsoft Ajax Library来完成.本文将介绍在ASP.NET MVC中使用AS

ASP.NET MVC专题

Asp.net Mvc Framework 十二 Castle扩展 Asp.net Mvc Framework 十一 (自定义Helper在MVC中的使用) Asp.net Mvc Framework 十(测试方法及Filter的示例) Asp.net Mvc Framework 九 (View与Controller交互) Asp.net Mvc Framework 八 (Helper) Asp.net Mvc Framework 七 (Filter及其执行顺序) Asp.net Mvc Fra