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

本文详细解读Web.config配置文件中的ExtAspNet节,包括全局参数配置及关键配置项说明,如主题、语言、表单错误提示位置等,并通过实例展示了如何在页面中引用ExtAspNet控件及配置HttpModules、HttpHandlers等功能。

作为站点级别的配置文件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)
 
注意:

 
 
 

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秘密花园》系列文章由三生石上原创,博客园首发,转载请注明出处。文章目录 官方论坛

基于Extjs的开源控件库ExtAspNet中文版 v3.1.9,ExtAspNet - 基于 ExtJS 的专业 ASP.NET 2.0 控件库,拥有完善的 AJAX 支持和丰富的界面效果。ExtAspNet 是一组基于 ExtJS 的专业 ASP.NET 2.0 控件库,拥有完善的 AJAX 支持和丰富的界面效果。 ExtAspNet 是为了创建没有 JavaScript,没有 CSS,没有 UpdatePanel,没有 ViewState,没有 WebServices 的网站应用程序。 支持的浏览器: IE 7.0+、Firefox 3.6+、Chrome 3.0+、Opera 10.5+、Safari 3.0+ 授权协议:Apache License 2.0 (Apache) ExtAspNet 是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果。目标是创建没有JavaScript,没有CSS,没有UpdatePanel,没有WebServices的Web应用程序。 注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. +2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的GetShowReference返回的字符串中包含双引号的问题(︶ㄣ東東ㄣ、天蓝若空、李剑飞、克儿~)。 -虽然返回的JavaScript语句没问题,但是如果放到HTML属性中就有问题了。 -修正HtmlNodeBuilder在处理双引号等字符时可能导致潜在JavaScript问题。 -从根本上解决WindowField、LinkButton、HyperLink等控件的客户端脚本中存在单引号或者双引号时出现的各种问题。 -增加动态创建模板列示例grid/griddynamiccolumns2.aspx(大鸟打小鸟)。 -修正按钮的Type设为Reset无效的问题,注意重置的其实是页面上所有的表单控件(e先生)。 -修正英文下确认对话框标题依然默认中文的问题。 -修正后台对可为空的int,short,double属性赋值时出现的异常(石头鱼)。 +为Window控件增加GetMaximizeReference和GetRestoreReference两个方法。 -变通的实现打开窗体后最大化:PageContext.RegisterStartupScript(Window2.GetShowReference() + Window2.GetMaximizeReference()); -增加英文示例http://demo.extasp.net/en/。 -更新行布局、列布局和锚点布局示例。 -增加表格导出Excel文件示例。 -增加表格模板列使用单选列表、复选列表的示例。 -完善在线文档http://doc.extasp.net/。 -公开ControlBase的ConvertPropertiesToJObject和RecoverPropertiesFromJObject两个方法。 -兼容Asp.Net的用户控件(UserControl)并增加示例(Spring)。 -更新示例框架,增加手风琴控件和树控件的组合菜单(幻之达)。 -修正自动树节点ID的生成规则,防止页面中多个树控件产生的命名冲突。 -修正表格WindowField生成的脚本可能会出现类似x2未定义的错误(梦如人生)。 -应广大网友的要求,表格的BoundField在启用状态并且提示信息为空的情况下去除标签。 -类似于onReady函数,增加对onInit函数的支持,用来在执行页面初始化脚本之前调用。 -优化复选框列表和单选按钮列表,减少生成的代码量。 -修正CheckBoxList和RadioButtonList无法在回发中更新的BUG(破风、吉吉﹑落叶飞尘)。 -修正CheckBoxList和RadioButtonList初始为空时页面不能显示的BUG(e先生、黑眼睛咪咪、宇洋)。 -预祝俺家小师生日快乐!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值