如何将文本“Hello World”添加到WebControl,如<h1> Hello World </h1>

时间:2012-11-19 15:26:09

标签: asp.net c#-4.0

需要帮助查找如何在asp.net中向web控件添加文本。如果可能的话,寻找最简单的解决方案,或者使用控件构建器,如果这很简单的话。

WebControl生成的示例html:

<h3>Hello World</h3>

到目前为止我最好的尝试示例:

WebControl wc = new WebControl(HtmlTextWriterTag.H3);
wc.????

下面回答至少两个版本:

  1. HtmlGenericControl ...可以与var一起使用 var h3_hgc = new HtmlGenericControl(“h3”);     h3_hgc.InnerText =“Hello World”;

  2. LiteralControl,源自WebControl LiteralControl hwLiteralControl = new LiteralControl(“Hello World”); wc.Controls.Add(hwLiteralControl);

2 个答案:

答案 0 :(得分:5)

Headings不是服务器webcontrols,而是html元素。如果您需要动态创建它:

var h3 = new HtmlGenericControl("h3");
h3.InnerHtml = "Hello World";
container.Controls.Add(h3);

其中container是您要添加它的控件。

答案 1 :(得分:2)

我喜欢将文字字符串放入页面的方法是使用Literal标记

Default.aspx的:

<h1><asp:Literal ID="litHeader" runat="server" /></h1>

Default.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    litHeader.Text = "Hello World";
  }
}

我喜欢使用Literal控件的是没有额外的标记可以呈现给HTML。无论何时我想在屏幕上显示任何内容,但以后都不会引用它以获取值,这种方法效果很好。

如何呈现:

<h1>Hello World</h1>

编辑:

上面的例子是一个简单的演示方法。在屏幕上输出任何内容时,您需要确保防止跨站点脚本攻击。由于您使用的是ASP.Net Web Forms,我将从Microsoft获得NuGet软件包“Antixss”。 (在Server.HtmlEncode上使用Antixss'Encoder.HtmlEnocde(),heres why

以下是您将如何使用它:

Default.aspx.cs:

using Microsoft.Security.Application;

protected void Page_Load(object sender, EventArgs e)
{
  /* username is pulled from a datastore*/
  if (!IsPostBack)
  {
    litHeader.Text = Encoder.htmlEncode(username);
  }
}