ASP.NET - 本地化 Web 服务器控件概述

来源:互联网 发布:淘宝客服好干吗 编辑:程序博客网 时间:2024/05/17 23:37

 

      Localize Web 服务器控件使您可以在页的特定区域中显示本地化后的文本。

 

一、背景

Localize 控件与 Literal Web 服务器控件完全相同,并与 Label Web 服务器控件相似。虽然 Label 控件可让您向显示的文本应用样式,但 Localize 控件不允许这样做。通过设置从 Literal 控件继承的 Text 属性,您可以以编程方式控制在 Localize 控件中显示的文本。

 

      1、编码内容

Localize 控件支持 Mode 属性,该属性用于指定控件对您所添加的标记的处理方式。可以将 Mode 属性设置为以下值:

·Transform 添加到控件中的任何标记都将进行转换,以适合发出请求的浏览器的协议。如果向使用 HTML 以外的其他协议的移动设备呈现内容,此设置非常有用。

·PassThrough 添加到控件中的任何标记都将按原样呈现在浏览器中。

·Encode 添加到控件中的任何标记都将使用 HtmlEncode 方法进行编码,该方法将把 HTML 编码转换为其文本表示形式。例如,<b> 标记将呈现为 &lt;b&gt;。当希望浏览器显示而不解释标记时,编码将很有用。编码对于安全也很有用,有助于防止在浏览器中执行恶意标记。显示来自不受信任的源的字符串时推荐使用此设置。

 

      2、使用资源字符串对文本进行本地化

可以创建要显示在 Localize 控件的 Text 属性中的本地化字符串,方法是使用显式或隐式表达式作为该属性的值。表达式将使用资源 (.resx) 文件中定义的字符串进行计算。

在应用程序的根目录中的名为 App_GlobalResources App_LocalResources 的文件夹中创建 .resx 文件。如果必须将字符串本地化为多种语言,可以创建其他 .resx 文件,并在文件名中包含区域设置信息。例如,资源文件的法语版本可命名为 ExampleLocalizedStrings.fr.resx

 

二、如何:向 ASP.NET 网页添加 Localize Web 服务器控件

      当您希望在页上的特定区域中显示本地化的文本时,可以向 ASP.NET 网页添加 Localize Web 服务器控件。Localize 控件与 Literal Web 服务器控件完全相同,并与 Label Web 服务器控件相似。Label 控件允许您向显示的文本应用样式,而 Localize 控件则不允许这样做。通过设置从 Literal 控件继承的 Text 属性,您可以以编程方式控制在 Localize 控件中显示的文本。

      1、从工具箱的“标准”选项卡中,将 Localize 控件拖动到页面上。

2、或者,将 Mode 属性设置为 TransformPassThrough EncodeMode 属性指定控件如何处理您添加到该控件中的标记。

3、将代码添加到页面上以在运行时设置控件的 Text 属性。

下面的代码示例演示如何以编程方式设置 Localize 控件的文本和编码。该页包含一组单选按钮,允许用户在编码文本和按原样传递的文本之间选择。

说明: 如果将 Text 属性设置为从不受信任的源获取的文本,请将控件的 Mode 属性设置为 Encode,以使标记不可执行。

<%@ Page Language="C#" %>

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)

    {

        Localize1.Text = "This <b>text</b> is inserted dynamically.";

        if (radioEncode.Checked == true)

        {

            Localize1.Mode = LiteralMode.Encode;

        }

        if(radioPassthrough.Checked == true)

        {

            Localize1.Mode = LiteralMode.PassThrough;

        }

    }

</script>

 

<html >

  <head id="Head1" runat="server">

    <title>Untitled Page</title>

  </head>

  <body>

    <form id="form1" runat="server">

      <div>

        <br />

        <asp:RadioButton

          ID="radioEncode"

          runat="server"

          GroupName="LocalizeMode"

          Checked="True"

          Text="Encode"

          AutoPostBack="True" />

        <br />

        <asp:RadioButton

          ID="radioPassthrough"

          runat="server"

          GroupName="LocalizeMode"

          Text="PassThrough"

          AutoPostBack="True" />

        <br />

        <br />

        <asp:Localize ID="Localize1" runat="server"></asp:Localize>

      </div>

    </form>

  </body>

</html>

 

三、Localize

      在网页上保留显示本地化静态文本的位置。

      说明: 忽略 body 元素外部的控件。

Localize 控件从 Literal 控件继承,与该控件完全相同。设计时使用 Localize 控件将可以本地化的静态文本与其他静态文本区分开来。虽然使用 Label 控件可以对所显示的文本应用样式,但使用 Localize 控件则不行。可以通过设置 Literal.Text 属性(从 Literal 控件继承),以编程方式管理在控件中显示的文本。

      警告: 此控件可用来显示用户输入,而该输入可能包含恶意的客户端脚本。在应用程序中显示从客户端发送来的任何信息之前,请检查它们是否包含可执行脚本、SQL 语句或其他代码。ASP.NET 提供输入请求验证功能以阻止用户输入中的脚本和 HTML。还提供验证服务器控件以判断用户输入

 

示例

下面的代码示例演示如何使用 Localize 控件显示静态文本。

      说明: 下面的代码示例使用单文件代码模型,如果将它直接复制到代码隐藏文件中,则它可能无法正常工作。此代码示例必须被复制到具有 .aspx 扩展名的空文本文件中。

<%@ Page Language="C#" AutoEventWireup="True" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  >

<head>

    <title>Localize Example</title>

<script runat="server">

 

      void ButtonClick(Object sender, EventArgs e)

      {

         Localize1.Text="Welcome to ASP.NET!! This is localized text.";

      }

 

   </script>

 

</head>

<body>

   <form id="Form1" runat="server">

      <h3>Localize Example</h3>

 

      <asp:Localize id="Localize1"

           Text="Hello World!!"

           runat="server"/>

 

      <br /><br />

 

      <asp:Button id="Button1"

           Text="Change Localize Text"

           OnClick="ButtonClick"

           runat="server"/>

 

   </form>

</body>

</html>

原创粉丝点击