* 新的Page属性
附件:
image5.png 任何ASP.NET开发人员对于@Page标签都不会陌生。好消息是ASP.NET4.0完全兼容之前版本所提供的42个属性。更好的消息是,ASP.NET4.0还带来了6个新的属性,以应对日益复杂的开发需求:
1. ClientIDMode 顾名思义,这个属性用来定义ASP.NET将如何生成控件的客户端ID,如果你是一个前端开发人员,你将会明白能够确定的控制客户端ID的生成将带来多大的便利。可能的值为AutoID(default/current),Predictable,Static和Inherit。
2. ClientTarget 用来定义页面将针对哪个浏览器来执行。这将覆盖ASP.NET提供的自动浏览器识别功能,可能的应用场景为比如我们只需要支持IE浏览器或只需要支持 FIREFOX等。
3. MetaDescription 顾名思义,用来生成页面的meta 的description标签。在我看来只是提供了一个更为官方的方法和方式,标准化了这一流程。
4. MetaKeywords 顾名思义,用来生成meta的keywords标签。
5. TargetSchema 用来定义验证页面所需的schema。这个标签只是用来标识的,并不会真正的执行。可以看作一种代码注释。
6. ViewStateMode 用来定义页面的VIEWSTATE是opt-in还是opt-out(默认)模式。
总体来说变化不大,提供了一些呼声很高的功能。
*
生成更纯净,更标准的HTML代码 这一直是ASP.NET中比较大的问题. ASP.NET1.1生成的html代码基本都不符合标准,这一点在ASP.NET2.0中已经进行了改进,我们在web.config中引入了 xhtmlConformance,用来定义控件将生成何种标准的HTML代码,默认为XHTML1.0 Transitional standard(Transitional)。相应的,我们可以将它设定为XHTML1.0 Strict(Strict)或者选择生成与ASP.NET1.1相同的HTML代码(Legacy,主要用来兼容从ASP.NET1.1升级而来的网站)。
不幸的是,在Legacy模式运行的网站与ASP.NET AJAX不兼容,而且尽管Transitional与Strict模式与XHTML标准兼容,但生成的代码对CSS也是非常不友好的。例如:
1. menu用table输出而不是UL/OL。
2. 服务器端的控件属性例如 border=0 或disabled=disabled 是强制的并且无法移除
3. 对于支持template的控件,你可以对template内的代码进行任何的自定义,但无法移除最外层的table标签。
ASP.NET3.5带来的ListView,DataPager和 CSS Control Adapters控件带来了过渡性的解决方案,ASP.NET4.0完全将他们集成在新版本的System.Web中,使得微软可以使 ASP.NET4.0可以尽可能的对CSS友好。毋庸置疑,生成干净的HTML标签是ASP.NET4.0的重要目标之一。
* ControlRenderingCompatibilityVersion
与xhltmlComformance类似,ASP.NET4.0为web.config带来了这个新的属性。当设置为3.5时,一切将和原来一致,但当你设置为4.0时,控件将按照全新的模式输出HTML代码:
1. xhtmlConformance被设置为Strict
2. menu将会用UL/OL的形式输出
3. 多余的HTML属性将被移除,甚至连validation的字体颜色也不会被设置为红色。
4. 将可以对控件使用RenderOuterTable属性来控制是否输出外围的table标签。
在我看来这对于习惯使用控件的同学是个好消息。微软又帮你做了许多工作。
*
新增的一些小功能 列举一些新增的细节功能
1. 内置<asp:chart>
2. 三种新的Redirect方式:Response.RedirectToRoute(HTTP302), Response.RedirectToRoutePermanent(HTTP301)和 Response.RedirectPermanent(HTTP301)
3. Inline的HTML encoded 字符串。
附件:
image6.png 4. Routing配置更便捷
(文/
Pandora)