zoukankan      html  css  js  c++  java
  • web.config的全局设置

    from:http://www.sztarena.org/netpeixun/752.html
    前面我介绍了一些常用的Page指令,考虑到方便性,ASP.NET还允许我们在web.config中为一些常用的指令配置默认值。下面我就一些常用的场景来说明这些全局配置的方便性。
    1. 通常,我在创建一个网站项目时,肯定会决定不使用ViewState和Session的。那么如果为每个页面设置 EnableViewState,EnableSessionState指令属性,那就显得太麻烦了,而且还容易遗漏。此时,我们可以直接在 web.config中为这些参数指定一个全局的默认值:
    1. <pages enableViewState="false" enableSessionState="false"></pages>
    2. 
    补充说明一下:全局禁用Session的彻底方法是把Session对应的HttpModule从httpModules列表中移除。
    web.config允许我们设置Page默认参数的具体配置节如下:
    1. <pages      
    2.    buffer="[True|False]"
    3.    enableEventValidation="[True|False]"
    4.    enableSessionState="[True|False|ReadOnly]"
    5.    enableViewState="[True|False]"
    6.    enableViewStateMac="[True|False]"
    7.    smartNavigation="[True|False]"
    8.    autoEventWireup="[True|False]"
    9.    pageBaseType="typename, assembly"
    10.    userControlBaseType="typename"
    11.    validateRequest="[True|False]"
    12.    masterPageFile="file path"  
    13.    theme="string"
    14.    styleSheetTheme="string"
    15.    maxPageStateFieldLength="number"  
    16.    compilationMode="[Always|Auto|Never]"  
    17.    pageParserFilterType="string"  
    18.    viewStateEncryptionMode="[Always|Auto|Never]"  
    19.    maintainScrollPositionOnPostBack="[True|False]"  
    20.    asyncTimeout="number"
    21. >
    22.    <controls>...</controls>
    23.    <namespaces>...</namespaces>
    24.    <tagMapping>...</tagMapping>
    25. </pages>
    2. 为了代码重用,设计用户控件也是很常用的方法。
    我们可以使用 @ Register指令 在页面注册需要使用的UserControl或者WebControl。然而,有些控件比较通用,许多页面都会使用它,那么就不要再使用 @ Register指令了,可以在web.config中统一注册。例如:
    1. <pages>
    2.     <controls>
    3.         <add tagPrefix="fish" tagName="MainMenu" src="~/Controls/MainMenu.ascx" />
    4.         <add tagPrefix="fish" tagName="PageHeader" src="~/Controls/PageHeader.ascx" />
    5.     </controls>
    6. </pages>
    有了这个定义后,我就可以在任何页面中直接使用:
    1. <fish:PageHeader runat="server" ID="PageHeader1" />
    3. 对于喜欢使用页面内联代码的人来说,可能经常需要使用自己定义的类型。如果这些类型定义在某个命名空间中,那么就需要在内联代码中采用完整命名空间的写 法。虽然这样做没有什么问题,但就是麻烦,于是,我们可以在页面中使用 @ Import指令 来导入我们需要使用的命名空间,但是这个指令每次只能导入一个命名空间,而且每个页面还得重复导入,显然不够方便。
    为了方便使用一些常用的命名空间,我们可以在web.config中统一指定,例如:
    1. <pages>
    2.     <namespaces>
    3.         <add namespace="MyMVC" />
    4.         <add namespace="WebSiteCommonLib" />
    5.         <add namespace="WebSiteModel" />
    6.     </namespaces>
    7. </pages>
    这样设置后,所有页面就可以直接使用这些命名空间下的类型了。
    不知道有些人想过:为什么在页面中使用某些微软提供的类型就不需要导入命名空间?
    答案是:其实ASP.NET已经将一些微软认为常用的命名空间在web.config中配置好了:
    1. <pages>
    2.     <namespaces>
    3.         <add namespace="System"/>
    4.         <add namespace="System.Collections"/>
    5.         <add namespace="System.Collections.Specialized"/>
    6.         <add namespace="System.Configuration"/>
    7.         <add namespace="System.Text"/>
    8.         <add namespace="System.Text.RegularExpressions"/>
    9.         <add namespace="System.Web"/>
    10.         <add namespace="System.Web.Caching"/>
    11.         <add namespace="System.Web.SessionState"/>
    12.         <add namespace="System.Web.Security"/>
    13.         <add namespace="System.Web.Profile"/>
    14.         <add namespace="System.Web.UI"/>
    15.         <add namespace="System.Web.UI.WebControls"/>
    16.         <add namespace="System.Web.UI.WebControls.WebParts"/>
    17.         <add namespace="System.Web.UI.HtmlControls"/>
    18.     </namespaces>
    19. </pages>
    4. 现在,有越来越多的人为了方便而使用扩展方法。使用扩展方法的好处是:可以让我们不去关心这些扩展方法定义在那个类中,只要在支持扩展方法的对象上调用就可以了,就像下面的代码这样:
    1. 当前用户已登录,登录名:<%= Context.User.Identity.Name.HtmlEncode() %>
    然而,在页面中使用扩展方法时,也必须先导入扩展方法的定义类的命名空间。
    因此,为了方便,我们可以在web.config中为我们定义的扩展方法导入相应的命名空间:
    1. <pages>
    2.     <namespaces>
    3.         <add namespace="FishDemoCodeLib" />
    4.     </namespaces>
    5. </pages>

  • 相关阅读:
    创建数据库,用户,表
    Tomcat安装配置
    常用JS
    win8以管理员身份安装软件
    mybatis中@Param用法
    springMVC3
    SpringMVC参数绑定
    SpringMVC2
    查询数据库元数据
    mybatis 中 foreach collection的三种用法
  • 原文地址:https://www.cnblogs.com/luoyaoquan/p/2591506.html
Copyright © 2011-2022 走看看