asp.net页面指令page啥属性能指定编辑语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net页面指令page啥属性能指定编辑语言相关的知识,希望对你有一定的参考价值。

Language属性 该属性指定编译页面使用的语言。每页只能使用和指定一种语言。
例如,指定ASP.NET页编译器使用Visual Basic作为页的服务器端代码语言。代码如下:
<%@ Page Language="VB" %>
------------------------------------------------------
@Page指令

@Page指令允许开发人员为页面指定多个配置选项,并且该指令只能在Web窗体页中使用。每个.aspx文件只能包含一条@Page指令。@Page指令可以指定:页面中代码的服务器编程语言;页面是将服务器代码直接包含在其中(即单文件页面),还是将代码包含在单独的类文件中(即代码隐藏页面);调试和跟踪选项,以及页面是否为某母版页的内容页。

语法:

<%@ Page attribute="value" [attribute="value"...]%>
attribute 为@Page指令的属性。@Page指令语法中各属性的说明如表所示。

@Page指令属性说明
--属性----描述-----
Async 使页成为异步处理程序默认值为false
AsyncTimeOut 定义在处理异步任务时使用的超时时间间隔(以秒为单位)。默认值为45秒。该值必须是整数

AutoEventWireup 指示页的事件是否自动绑定。如果启用了事件自动绑定,则为true;否则为false。默认值为true

Buffer 确定是否启用了HTTP响应缓冲。如果启用了页缓冲,则为true;否则为false。默认值为true

ClassName 一个字符串,指定在请求页时将自动进行动态编译的页的类名。此值可以是任何有效的类名,并且可以包括类的完整命名空间(完全限定的类名)。如果未指定该属性的值,则已编译页的类名将基于页的文件名

CodeFile 指定指向页引用的代码隐藏文件的路径

CodeFileBaseClass 指定页的基类及其关联的代码隐藏类的路径。此属性是可选的,但如果使用此属性,则必须同时使用CodeFile属性

CodePage 指示用于响应的编码方案的值

CompilationMode 设置是否应使用指定多个枚举选项之一的字符串来编译页。默认值为 Always,因此,默认情况下编译 .aspx 页

Culture 指示页的区域性设置。该属性的值必须是有效的区域性ID。注意,LCID和Culture属性是互相排斥的;如果使用了其中一个属性,就不能在同一页中使用另一个属性

Debug 指示是否应使用调试符号编译该页。如果应使用调试符号编译该页,则为 true;否则为 false。由于此设置影响性能,因此只应在开发期间将此属性设置为 true

Description 提供该页的文本说明。ASP.NET分析器忽略该值

EnableEventValidation 在回发方案中启用事件验证。如果验证事件,则为true;否则为false。默认值为true

EnableSessionState 定义页的会话状态要求。如果启用了会话状态,则为true;如果可以读取会话状态但不能进行更改,则为ReadOnly;否则为false。默认值为true。这些值不区分大小写

EnableTheming 指示是否在页上使用主题。如果使用主题,则为true;否则为false。默认值为true

EnableViewState 指示是否在页请求之间保持视图状态。如果要保持视图状态,则为true;否则为false。默认值为true

ErrorPage 定义在出现未处理页异常时用于重定向的目标URL

Inherits 定义供页继承的代码隐藏类。它与CodeFile 属性(包含指向代码隐藏类的源文件的路径)一起使用

Language 指定在对页中的所有内联呈现(<% %> 和 <%= %>)和代码声明块进行编译时使用的语言。值可以表示任何.NET Framework支持的语言,如C#

LCID 定义Web窗体页的区域设置标识符MaintainScrollPosition
OnPostback 设置在回发后是否将客户端的页面返回到请求前的同一位置,默认为false

MasterPageFile 设置内容页的母版页或嵌套母版页的路径。支持相对路径和绝对路径

ResponseEncoding 指示用于包含页内容的HTTP响应的编码方案的名称。分配给该属性的值是有效的编码名称

SmartNavigation 指示页是否支持Internet Explorer 5.5或更高版本的智能导航功能。如果启用了智能导航,则为true;否则为false。默认值为false

Src 指定包含链接到页的代码的源文件的路径。在链接的源文件中,可以选择将页的编程逻辑包含在类中或代码声明块中。可以使用Src属性将生成提供程序链接到页

StyleSheetTheme 定在页上使用的有效主题标识符。如果设置了StyleSheetTheme属性,则单独的控件可以重写主题中包含的样式设置。这样,主题可以提供站点的整体外观,同时,利用StyleSheetTheme属性中包含的设置可以自定义页及其各个控件的特定设置

TargetSchema 指定用于验证页内容的方案的名称。此属性仅起描述性的作用,而不会真正执行验证;分析器将忽略此属性Theme 指定在页上使用的有效主题标识符。如果设置Theme属性时没有使用StyleSheetTheme属性,则将重写控件上的单独的样式设置,允许您创建统一而一致的页外观Title 指定在响应的 html<title>标记中呈现的页的标题。也可以通过编程方式将标题作为页的属性来访问Trace 指示是否启用跟踪。如果启用了跟踪,则为true;否则为false。默认值为false

TraceMode 指示当启用跟踪时如何为页显示跟踪消息。可能的值为SortByTime和SortByCategory。当启用跟踪时,默认值为 SortByTime

Transaction 指示在页上是否支持事务。可能的值有Disabled、NotSupported、Supported、Required和RequiresNew。默认值为Disabled

常用属性说明:

(1)AutoEventWireup属性 该属性指示页的事件是否自动绑定。
ASP.NET 2.0默认为true,ASP.NET 1.0和ASP.NET 1.1默认为false。ASP.NET页触发的事件,如Init、Load等,在默认情况下,可以使用“Page_事件名”的命名约定将页事件绑定到相应的方法,页面编辑时ASP.NET将查找基于此命名约定的方法,并自动执行。

例如,如果要显示声明事件的处理程序,可以将AutoEventWireup属性设置为false。代码如下:
<%@ Page Language="C#" AutoEventWireup="false" %>

(2)CodeFile属性 该属性指定指向页引用的代码隐藏文件的路径。此属性与Inherits属性一起使用可以将代码隐藏源文件与网页相关联。此属性仅对编译的页有效。

例如:新添加一个.aspx页时,设置该页面代码隐藏文件的路径为“Default2.aspx.cs”。代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

说明:若要定义@Page指令的多个属性,请使用一个空格分隔每个属性/值对。对于特定属性,不要在该属性与其值相连的等号(=)两侧加空格。

(3)Language属性 该属性指定编译页面使用的语言。每页只能使用和指定一种语言。

例如,指定ASP.NET页编译器使用Visual Basic作为页的服务器端代码语言。代码如下:
<%@ Page Language="VB" %>
参考技术A Language追问

真的么?

追答

真的

本回答被提问者采纳

pages与页面配置

全局定义页特定配置设置,如配置文件范围内的页和控件的 ASP.NET 指令。能配置当前Web.config目录下的所有页面的设置。

   

<pages     
   buffer="[True|False]"
   enableEventValidation="[True|False]"
   enableSessionState="[True|False|ReadOnly]"
   enableViewState="[True|False]"
   enableViewStateMac="[True|False]"
   smartNavigation="[True|False]"
   autoEventWireup="[True|False]"
   pageBaseType="typename, assembly"
   userControlBaseType="typename"
   validateRequest="[True|False]"
   masterPageFile="file path" 
   theme="string"
   styleSheetTheme="string"
   maxPageStateFieldLength="number" 
   compilationMode="[Always|Auto|Never]" 
   pageParserFilterType="string" 
   viewStateEncryptionMode="[Always|Auto|Never]" 
   maintainScrollPositionOnPostBack="[True|False]" 
   asyncTimeout="number"
>
   <controls>
      <add 
         assembly="指定程序集的名称"
         namespace="指定与标记前缀关联的命名空间"
         src="指定文件的名称"
         tagName="指定页中要使用的控件的名称并且还需要设置 src 属性"
         tagPrefix="指定映射到源文件或命名空间和程序集的标记前缀"/>
   </controls>
   <namespaces>
      <add 
        namespace="指定要在预编译期间使用的命名空间"
      />
   </namespaces>
   <tagMapping>
      <add
         mappedTagType="指定 tagType 要重新映射到的类型的名称,新的控件名称"
         tagType="指定要重新映射的标记的类型的名称。原有ASP.NET控件的名称"
      />
   </tagMapping>
</pages>

 

与Pages上的部分设置可以在单独页面上通过@Page指令进行设置,Pages配置节的属性是@Page指令的子集,两者的属性说明则参考MSDN《pages 元素(ASP.NET 设置架构)》和《@ Page》。新建一个aspx页面,就会看到页面上的@Page命令

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="FastDoge.Study.WebForm2" %>

 

他们的作用是

Language:指定在对页中的所有内联呈现(<% %> 和 <%= %>)和代码声明块进行编译时使用的语言。值可以表示任何 .NET Framework 支持的语言,包括 Visual Basic、C# 或 JScript。每页只能使用和指定一种语言。

AutoEventWireup:指示页的事件是否自动绑定。如果启用了事件自动绑定,则为 true;否则为 false。默认值为 true。

CodeBehind:指定包含与页关联的类的已编译文件的名称。该属性不能在运行时使用。

Inherits:定义供页继承的代码隐藏类。它可以是从 Page 类派生的任何类。它与 CodeFile 属性(包含指向代码隐藏类的源文件的路径)一起使用。

AutoEventWireup的具体作用是,把隐藏类中的页事件的绑定方法(最常见的是Page_Load)自动绑定上去,因为通篇没看到给Page类显式绑定事件的代码。假如将其设置成false,Page_Load方法不会执行。

  

pages的子节点有三个:controls,namespaces和tygMapping

   

Namespaces与@Import指令

用于指定页面上的代码所需要的命名空间,实际上是给即时编译的编译器添加指定的命名空间

例如在webform中添加如下代码

 

    <form id="form1" runat="server">
    <div>
        <script runat="server">
            protected void Page_Load(object sender, EventArgs e)
            {
                
                Thread.Sleep(6000);
                this.lb1.Text = "123 " + File.Exists(@"E:\\123.txt");
            }
        </script>
        <asp:Label ID="lb1" runat="server" />
    </div>
    </form>

 

 

 

打开页面则会发现预编译出错了

可以在web.config中添加pages配置节

    <pages>
      <namespaces>
        <add namespace="System.Threading"/>
        <add namespace="System.IO"/>
      </namespaces>
    </pages>

 

这样运行就正常了

同样也可以在页面上使用@Import命令

<%@ Import Namespace="System.IO" %>

 

同样达到效果,一般情况下建立项目后,web.config的pages/namespaces下添加了若干个命名空间,所以.NET 类库里面的一些类能被在页面上调用,到后来的MVC里面同样有添加

但在MVC的Razor语法中,新增了@using语句,@Import使用变少了  

   

Controls与@Register指令

定义标记前缀所在的 register 指令和命名空间的集合,我认为是用于指定用户控件和自定义控件。

在本次实践中,鄙人写了一个简单的用户控件MyLogin。

把它直接拖入WebForm2页面中,自动生成的代码如下所示

单纯在单个页面使用的话,引入非ASP.NET控件时需要用@Register声明控件的前缀和标签名,以及关联的控件文件。如果不想在每个页面都如此声明,则可以在web.config中添加配置

关键看controls那一节。此时清除页面上的@Register命令也不会出错。

注意:需要在web.config中声明控件的,控件文件*.ascx不能放在web.config的同层目录,否则运行则会报错。

controls 元素定义标记前缀所在的 register 指令和命名空间的集合。 此元素对应于 ASP.NET 页上的 @ Register 指令。 使用 @ Register 指令可以指定用户控件的标记前缀。

标记前缀将 ASP.NET 中的命名空间与 COM 控件和用户控件正常工作所需的程序集和命名空间相关联。 下面的信息在配置 controls 元素时很有用:

  • 如果应用于用户控件,则必须定义 add 子元素的 tagPrefix、tagName 和 source 特性。
  • 如果应用于自定义控件,则必须定义 add 子元素的 tagPrefix、namespace 和 assembly 特性。 如果控件位于应用程序代码目录中,则不需要 assembly 特性。

可以使用相同的 tagPrefix 值来映射到多个程序集或命名空间。

在以下情况中,使用 @ Register 指令:

  • 以声明方式将自定义服务器控件添加到网页、用户控件、母版页或外观文件(请参见 ASP.NET Themes Overview)。
  • 以声明方式将用户控件添加到网页、用户控件、母版页或外观文件。

使用 @ Register 指令引用控件时,可以将控件的代码放在以下位置:

  • 作为应用程序的 App_Code 文件夹的源代码,将在运行时在该文件夹中动态编译代码。 在开发过程中可以使用这一便捷选项。 如果您选择此选项,则不必在 @ Register 指令中使用 assembly 特性。
  • 作为应用程序的 Bin 文件夹中的编译的程序集。 这是一个针对部署的 Web 应用程序的通用选项。
  • 作为全局程序集缓存 (GAC) 中编译和签署的程序集。 这是一个针对希望在多个应用程序之间共享编译的控件的通用选项。 通过向 assembly 特性分配正在识别的字符串,可以引用 GAC 中的控件。 此字符串指定有关控件的所需详细信息,包括控件的完全限定类型名、版本、公钥标记和区域性。 下面的虚拟字符串阐明了对 GAC 中的自定义控件的引用:
    <%@ Register tagprefix="custom"
    namespace="Mycompany.namespace"
    assembly="Mycompany.namespace.control, Version=1.2.3.4,
    PublicKeyToken=12345678abcdefgh, Culture=neutral" %>

    有关引用程序集的更多信息,请参见compilation 的 assemblies 的 add 元素(ASP.NET 设置架构)

对于声明性用户控件,请使用 tagname、tagprefix 和 src 特性。 在页中声明控件时,前两个属性总是以冒号分隔对 (tagprefix:tagname) 的形式一起使用。 可以将多个命名空间映射到同一 tagname,如以下示例所示:

<% @Register tagprefix="tag1" namespace="MyNamespace1"/>
<% @Register tagprefix="tag1" namespace="MyNamespace2"/>

src 特性值既可以是相对路径,也可以是从应用程序的根目录到用户控件源文件的绝对路径。 为方便使用,建议使用相对路径。 例如,假设将应用程序的所有用户控件文件存储在应用程序根目录的子目录 \\Usercontrol 中。 若要包括 Usercontrol1.ascx 文件中的用户控件,请在 @ Register指令中包含以下内容:

Src="~\\usercontrol\\usercontrol1.ascx"

代字号 (~) 字符表示应用程序的根目录。

当包含已经编译为 .dll 文件供应用程序使用的自定义服务器控件时,请将 tagprefix 特性与 assembly 和 namespace 特性一起使用。 如果没有包含 namespace 特性,或者为其分配了一个空字符串 (""),则会出现分析器错误。

   

   

tagMapping

定义一个标记类型的集合,这些标记类型在编译时重新映射为其他标记类型。通过下面的例子就明白tagMapping的作用了。首先添加了一个Login控件

   

然后开始更改,添加一个类FDLogin去继承Login控件,重写Render方法

 1         protected override void Render(HtmlTextWriter writer)
 2         {
 3             writer.BeginRender();
 4 
 5             writer.RenderBeginTag("h1");
 6             writer.Write("hello world");
 7             writer.RenderEndTag();
 8             writer.WriteBreak();
 9 
10             writer.Write(@"<div>
11     Id:<input type=""text"" name=""loginId"" />
12 </div>
13     <div>
14         Password:<input type=""password"" name=""password"" />
15     </div>
16     <div>
17         <input type=""reset"" value=""Reset"" />
18         <input type=""submit"" value=""login"" />
19         <input type=""button"" value=""Regist"" />
20     </div>");
21             writer.EndRender();
22         } 
 

接着在web.config中添加

这样就把Login控件给玩坏,在aspx页面中添加的asp:Login控件全部变成经本人扩展后的FDLogin控件模样。在不改任何页面代码的情况下运行

在这次更改控件由于不太会使用HtmlTextWriter,所以很挫地使用了Wirte方法直接写html代码,应该上网看看其他控件的源码才对。浏览了一下源码,控件的Render操作实际上也是在一个Adapter中进行。但这个Adapter就不是System.Web.Mobile下面的,是System.Web下的。

以上是关于asp.net页面指令page啥属性能指定编辑语言的主要内容,如果未能解决你的问题,请参考以下文章

将自定义属性添加到 asp.net-mvc 中的页面指令

jsp中的page指令有哪些常用属性

ASP.net的指令

Asp.net Page指令

JSP基础语法

pages与页面配置