简体   繁体   English

将Web控件作为纯文本呈现为字符串

[英]Rendering web controls as plain text into a string

Is there any way to render the text as it is displayed on the browser instead of the underlying html. 有什么方法可以呈现在浏览器中显示的文本,而不是底层的html。 I am trying to emulate the javascript's .innerText() functionality on the server side code. 我正在尝试在服务器端代码上模拟javascript的.innerText()功能。

For instance for the following code is it possible to render "Hello World" instead of 例如,以下代码可以渲染“ Hello World”而不是

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

Here is the code: 这是代码:

<%@ 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>

You have to change your HTML to use literal : 您必须更改HTML以使用文字:

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

Your C# : 您的C#:

protected void Page_Load(object sender, EventArgs e)
{
  HelloWorld.Text = 'Your text without HTML':
}

When markup is not needed then PlaceHolder and Literal are your friends :) 当不需要标记时,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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM