作為站點級別的配置文件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(如下圖所示),便於調試時發現問題,在正式發布時一定不要忘記關閉此參數。
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響應頭中指定要跳轉的頁面,如下圖所示:
查看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控件呢?