[原創]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秘密花園》系列文章由三生石上原創,博客園首發,轉載請注明出處。文章目錄 官方論壇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM