ASP.NET MVC preview 1升级到ASP.NET MVC preview 2的一些更改

微软这次为MVC新建了三个DLL库,分别是

System.Web.MVC.DLL(MVC的主要类,中间集成了大部分原来mvctoolkit的方法);

System.Web.Abstractions.DLL(HttpContextBase,HTTPRequestBase,HttpResponseBase,原来的3.6版中的IHttpContext,IHttpRequest,IHttpResponse接口进化而来的类)

System.Web.Routing.DLL(这里面最常用到的就是一个RouteValueDictionary)

这次放出的mvc preview 2相对于前一个版本,又取消了对于的版本为3.6的System.Web.Extensions的引用,

所以,原来有关引用3.6的节点全部都要改成引用3.5版的System.Web.Extensions;

Assemblies节点引用了上面说到的三个类

httpModules中UrlRoutingModule引用至

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Global.ascx中定义ROUTE做了几处修改

原来的格式为:

RouteTable.Routes.Add(new Route

{

Url = "[controller]/[action]/[id]",

Defaults = new { action = "Index", id = (string)null },

RouteHandler = typeof(MvcRouteHandler)

});

现在改成了:

RouteTable.Routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler())

{

Defaults = new RouteValueDictionary(new { action = "Index", id =(string)null }),

});

这里要说到一个新的功能,URL中支持一个*号。例:{controller}/{*afterstring}

比如客户端访问的URL为 http://localhsot/Home/scott/2007/8/2,那么在controller中取到这的个afterstring值就为scott/2007/8/2。

Controller

取消了原来的[ControllerAction]的属性。不知道这个是为了什么

其它的基本上没啥改动,就是原来的MVCTOOLKITS不能用了造成了极大的代码修改问题.

MVC2刚刚安装.还有啥新功能还没有发现.相关的网上的内容太少,欢迎大家讨论!