InnerHtml and InnerText
1.InnerHtml 属性
InnerHtml 属性不自动对进出 HTML 实体的特殊字符进行编码。HTML 实体允许显示特殊字符(如 < 字符),浏览器通常会将这些字符解释为具有特殊含义。< 字符会被解释为标志的开头,并且不会在页面上显示。若要显示 < 字符,将需要使用实体 <。
例如,如果 InnerHtml 属性设置为 "<b> Hello </b>",则 < 和 > 字符不会分别转换为 < 和 >。呈现的输出仍将是:<b> Hello </b>。浏览器将检测 <b> 标记并用粗体显示“Hello”文本。
警告 由于未对此文本进行 HTML 编码,因此可以在文本的 HTML 标记内嵌入脚本。如果该属性是使用用户输入动态设置的,请务必验证它的值以减少安全漏洞。
若要提供自动 HTML 编码和解码,请使用 InnerText 属性。
注意 如果不存在子控件,则 InnerHtml 属性包含值 String.Empty。
C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<script language="C#" runat=server>
void Page_Load(Object Src, EventArgs E) {
Message.InnerHtml = "Welcome! You accessed this page at: " + DateTime.Now;
}
</script>
<body>
<span id="Message" runat=server></span>
</body>
</html>
2.InnerText 属性
与 InnerHtml 属性不同,InnerText 属性自动对进出 HTML 实体的特殊字符进行编码。HTML 实体允许显示特殊字符(如 < 字符),浏览器通常会将这些字符解释为具有特殊含义。< 字符会被解释为标志的开头,并且不会在页面上显示。若要显示 < 字符,将需要使用实体 <。
例如,如果 InnerText 属性设置为 "<b> Hello </b>",则 < 和 > 符号分别转换为 < 和 >。呈现的输出将是:< b > Hello </b >。< 和 > 实体将向浏览器指示这些字符将显示在页上。浏览器将不检测 <b> 标记并用粗体显示该文本。显示在页上的文本是:<b> Hello </b>。
若要放置自动 HTML 编码和解码,请使用 InnerHtml 属性。
注意 如果不存在子控件,则 InnerHtml 属性包含值 String.Empty。
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<script language="C#" runat=server>
void Page_Load(Object Src, EventArgs E) {
Message.InnerText = "To make text bold, use the <b> tag.";
}
</script>
<body>
<B><span id="Message" runat=server></span></B>
</body>
</html
小结: InnerHtml 是 不对特殊符号编译的,Html会根据标记解析处理页面。。“处理输出”。
InnerText 是 自动对符号编译的,Html会把被编译的符号还原成符号的样子,而不是解 析处理。“原样输出”。
InnerHtml 属性不自动对进出 HTML 实体的特殊字符进行编码。HTML 实体允许显示特殊字符(如 < 字符),浏览器通常会将这些字符解释为具有特殊含义。< 字符会被解释为标志的开头,并且不会在页面上显示。若要显示 < 字符,将需要使用实体 <。
例如,如果 InnerHtml 属性设置为 "<b> Hello </b>",则 < 和 > 字符不会分别转换为 < 和 >。呈现的输出仍将是:<b> Hello </b>。浏览器将检测 <b> 标记并用粗体显示“Hello”文本。
警告 由于未对此文本进行 HTML 编码,因此可以在文本的 HTML 标记内嵌入脚本。如果该属性是使用用户输入动态设置的,请务必验证它的值以减少安全漏洞。
若要提供自动 HTML 编码和解码,请使用 InnerText 属性。
注意 如果不存在子控件,则 InnerHtml 属性包含值 String.Empty。
C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<script language="C#" runat=server>
void Page_Load(Object Src, EventArgs E) {
Message.InnerHtml = "Welcome! You accessed this page at: " + DateTime.Now;
}
</script>
<body>
<span id="Message" runat=server></span>
</body>
</html>
2.InnerText 属性
与 InnerHtml 属性不同,InnerText 属性自动对进出 HTML 实体的特殊字符进行编码。HTML 实体允许显示特殊字符(如 < 字符),浏览器通常会将这些字符解释为具有特殊含义。< 字符会被解释为标志的开头,并且不会在页面上显示。若要显示 < 字符,将需要使用实体 <。
例如,如果 InnerText 属性设置为 "<b> Hello </b>",则 < 和 > 符号分别转换为 < 和 >。呈现的输出将是:< b > Hello </b >。< 和 > 实体将向浏览器指示这些字符将显示在页上。浏览器将不检测 <b> 标记并用粗体显示该文本。显示在页上的文本是:<b> Hello </b>。
若要放置自动 HTML 编码和解码,请使用 InnerHtml 属性。
注意 如果不存在子控件,则 InnerHtml 属性包含值 String.Empty。
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<script language="C#" runat=server>
void Page_Load(Object Src, EventArgs E) {
Message.InnerText = "To make text bold, use the <b> tag.";
}
</script>
<body>
<B><span id="Message" runat=server></span></B>
</body>
</html
小结: InnerHtml 是 不对特殊符号编译的,Html会根据标记解析处理页面。。“处理输出”。
InnerText 是 自动对符号编译的,Html会把被编译的符号还原成符号的样子,而不是解 析处理。“原样输出”。