使用母版页为动态HTML内容错误地呈现HTML

时间:2012-07-20 14:16:10

标签: asp.net html dynamic rendering

我有一个内容页面,其中包含一些动态HTML和一些静态HTML。此动态HTML在页面加载中分配给隐藏变量。

内容页面HTML

<asp:HiddenField id = "hid"  runat="server"></asp>

内容页面的CS

protected void Page_Load(object sender, EventArgs e)
{
  hid.Value = node1.InnerText;
}

此内容页面包含母版页。以下是其页面指令

<%@ Page Title="" Language="C#" MasterPageFile="~/log.Master"
  AutoEventWireup="true" CodeBehind="Log.aspx.cs" Inherits="s.Log"
  ValidateRequest="false" %>`

以下是内容页面的摘要

<%@ Page Title="" Language="C#" MasterPageFile="~/log.Master"
  AutoEventWireup="true"  CodeBehind="Log.aspx.cs" Inherits="s.Log"
  ValidateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
  <asp:HiddenField id = "hid"  runat="server"/>
</asp:Content>`

现在,当内容页面加载时,静态HTML将被加载到母版页中,但动态内容将呈现在母版页之外,因此显示错误的渲染。

1 个答案:

答案 0 :(得分:0)

<asp:HiddenField>的意思是它是隐藏的 - 因此其中包含的任何信息都应该是定义永远不会在页面上呈现。

如果该字段的内容包含可能导致其中断的任何HTML代码(例如尚未编码的HTML代码)......那么它可能会显示某些内容,但很可能是不正确。我认为这就是你所看到的。

我不完全确定您使用HiddenField的确切原因,或者您尝试对其中的内容做了什么,但我建议您更改以下行...

hid.Value = node1.InnerText;

使用...

hid.Value = Server.HtmlEncode(node1.InnerText);