0

有什么方法可以呈现文本,因为它显示在浏览器上而不是底层的 html 上。我正在尝试在服务器端代码上模拟 javascript 的 .innerText() 功能。

例如,对于以下代码,是否可以呈现“Hello World”而不是

<div id="Panel1">
    <div>Hello World</div>
</div>

这是代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RenderControl.aspx.cs" 

Inherits="AccessibleMenu.RenderControl" Trace="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Panel ID="Panel1" runat="server">
            <div>Hello World</div>
        </asp:Panel>
    </form>
</body>
</html>
<script type="text/C#" runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        Panel1.RenderControl(htw);
        Trace.Write(sb.ToString());
    }
</script>
4

2 回答 2

1

您必须更改 HTML 以使用文字:

<body>
    <form id="form1" runat="server">
         <asp:Literal   ID="HelloWorld" runat="server"></asp:Literal>
    </form>
</body>

你的 C#:

protected void Page_Load(object sender, EventArgs e)
{
  HelloWorld.Text = 'Your text without HTML':
}
于 2014-02-28T16:01:38.393 回答
0

当不需要标记时,PlaceHolder 和 Literal 是你的朋友 :)

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RenderControl.aspx.cs" Inherits="AccessibleMenu.RenderControl" Trace="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server">
            <asp:Literal ID="Literal1" runat="server" Text="Literal1"></asp:Literal>
        </asp:PlaceHolder>
    </div>
    </form>
</body>
</html>
<script type="text/C#" runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        PlaceHolder1.RenderControl(htw);
        Trace.Write(sb.ToString());
    }
</script>
于 2014-02-28T23:45:22.070 回答