ASP.NET MVC 2中的不兼容修改

前些天Scott Guthrie宣布ASP.NET MVC 2正式发布了。在带来众多新特性的同时,ASP.NET MVC 2也包含了一些不兼容的修改。与.NET BCL类库苛刻的修改规则相比,ASP.NET MVC的修改则有些烦人。

首先是IDataErrorInfo,这个接口一直存在于.NET中,却没有任何东西指导如何使用它。在ASP.NET MVC 1中,只有那些被修改过的属性才会被检查是否合法;而在2.0中,所有的属性都会被检查,这大大减少了出错的可能。此外,当验证属性失败时,就不会再验证类了。

Html.Substitute被用来创建那些不被缓存的片段,由于MVC视图引擎的改变,而从新版本中消失了。这意味着所有依赖部分缓存的人,都需要重新考虑他们的设计了。

IValueProvider取代了被大量使用的IDictionary接口。据文档记载“这个改变只会影响那些使用自定义value provider或自定义model binder的程序”。

辅助方法的返回值不再是一般的字符串,而是MvcHtmlString。这是为了支持ASP.NET中HTML编码模块的新语法。在ASP和ASP.NET中,开发人员可以使用<%= expression%>来混合静态与动态内容,但这样也很容易造成HTML注入错误。在ASP.NET 4中,开发人员可以使用新语法<%: expression%>来保证所有的字符串都被正确的编码为HTML。如果你不想字符串被编码,则需要让expression返回 IHtmlString。

对于DefaultControllerFactory的改变,意味着在自定义Controller Factory中做出相应的改变。自定义Controller Factory通常被用做依赖注入。

最后,“area”这个字符串在URL路由中变成了保留字,这是为了支持MVC 2中新加入的区域特性。

查看英文原文:ASP.NET MVC 2 Brings Breaking Changes

你可能感兴趣的:(ASP.NET MVC 2中的不兼容修改)