[原创]ExtAspNet秘密花园(三) — 站点级别的配置

作为站点级别的配置文件Web.config,我们首先来看下有哪些ExtAspNet相关的项目:

   1:  <?xml version="1.0"?>
   2:  <configuration>
   3:      <configSections>
   4:          <section name="ExtAspNet" type="ExtAspNet.ConfigSection, ExtAspNet" requirePermission="false"/>
   5:      </configSections>
   6:      <ExtAspNet EnableBigFont="true" DebugMode="true" />
   7:      <appSettings/>
   8:      <connectionStrings/>
   9:      <system.web>
  10:          <pages>
  11:              <controls>
  12:                  <add assembly="ExtAspNet" namespace="ExtAspNet" tagPrefix="ext"/>
  13:              </controls>
  14:          </pages>
  15:          <httpModules>
  16:              <add name="ExtAspNetScriptModule" type="ExtAspNet.ScriptModule, ExtAspNet"/>
  17:          </httpModules>
  18:          <httpHandlers>
  19:              <add verb="GET" path="res.axd" type="ExtAspNet.ResourceHandler, ExtAspNet"/>
  20:          </httpHandlers>
  21:      </system.web>
  22:  </configuration>
 

ExtAspNet节中的全局参数

    • Theme: 控件主题,目前支持三种主题风格(blue/gray/access,默认值:blue)
    • Language: 控件语言(en/zh_CN/zh_TW/...,默认值:zh_CN)
    • FormMessageTarget: 表单字段错误提示信息的显示位置(side/qtip,默认值:side)
    • FormOffsetRight: 表单字段右侧距离边界的宽度(默认值:20px)
    • FormLabelWidth: 表单字段标签的宽度(默认值:100px)
    • FormLabelSeparator: 表单字段标签与内容的分隔符(默认值:":")
    • EnableAjax: 是否启用AJAX(默认值:true)
    • AjaxTimeout: AJAX超时时间(单位:秒,默认值:60s)
    • EnableBigFont: 是否启用大字体,将ExtJS默认11px的字体全部改为12px,否则显示的中文字体太小(默认值:false)
    • DebugMode: 是否开发模式,启用时格式化输出页面JavaScript代码,便于调试(默认值:false)
 
注意:EnableBigFont用来将默认11px的字体全部改写为12px,因为用11px显示中文字体太小,建议启用这个参数。
开启DebugMode则会格式化输出页面生成的JavaScript(如下图所示),便于调试时发现问题,在正式发布时一定不要忘记关闭此参数。
image
 
 

system.web节中的配置

1. pages->controls节是为了定义ASPX页面引用控件的前缀,比如在页面中的按钮这样定义:

<ext:Button ID="Button1" Text="展开全部" runat="server"> </ext:Button>

注意:正如我们在前一节提到的,虽然可以在每个页面头部添加如下声明:<%@ Register Assembly="ExtAspNet" Namespace="ExtAspNet" TagPrefix="ext" %> 但这种做法过于麻烦,建议在Web.config中增加此配置项。

 
太棒了太棒了太棒了

2. httpModules节是为了在AJAX的环境中使用ASP.NET的 Response.Redirect 方法。

当我们使用ASP.NET的 Response.Redirect 方法时,响应状态码为302,并在Location响应头中指定要跳转的页面,如下图所示:

image_thumb8

查看ScriptModule.cs的源代码,我们会发现这个类拦截了HTTP响应,过滤出302的响应并返回一段JavaScript代码:

   1:  if (response.StatusCode == 302)
   2:  {
   3:      string redirectLocation = response.RedirectLocation;
   4:      response.Write(String.Format("window.location.href='{0}';", redirectLocation));
   5:  }
 
注意: 如果你不会在代码中使用 Response.Redirect 方法,就不需要添加这个配置项。在这种情况下,你也可以使用ExtAspNet提供的PageContext.Redirect 方法,它的作用和 Response.Redirect 一样。PageContext是ExtAspNet提供的一个静态类,用来辅助输出一个常用的JavaScript代码,你可以查看源代码来获取更多信息。
 
 

3. httpHandlers节是为了在JavaScript中引用内置在ExtAspNet中的图标。

ExtAspNet中内置了很多小图标,完整的列表请查看http://extasp.net/config/icons.htm

在JavaScript中可以简单的这样引用:

var icon1 = "./res.axd?icon=PageWhiteCode";
 
其实在引入这个配置之前,还有一种获取内置图标地址的方法:
var icon1 = '<%= IconHelper.GetIconUrl("PageWhiteCode") %>';
只不过后一种方法有两个缺点:
1. 这段代码必须放置在ASPX代码中。 
2. 生成的图标地址比较长

微笑

,类似于 /WebResource.axd?d=uDW5YUf2DLqBMvxRUQV3DtdjJW0RlswTCbxrvdhA0tGWb3upJGuodhzh1yEG__2ZgMXdSeA_pmqoD35VFyWVpubH5Zn_hj2CEKssW2m_HGku1Lz4_G1iEWjpv37FKL3P67p17A2&t=634405189453149561
 

注意:如果你不会在JavaScript中引用内置在ExtAspNet.dll中的图标,可以不添加这个配置项。

 

小结

一个简单的Web.config其实还是包含不少的知识,只要我们遇事冷静多思考,总会有收获的。

下一篇文章我们会关注PageManager控件,为什么每个页面都要添加一个PageManager控件呢?

 

 

注:《ExtAspNet秘密花园》系列文章由三生石上原创,博客园首发,转载请注明出处。文章目录 官方论坛

posted @ 2012-02-18 19:09 三生石上(FineUI控件) 阅读(...) 评论(...) 编辑 收藏