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 = "你好世界";

  2. LiteralControl 派生自 WebControl LiteralControl hwLiteralControl = new LiteralControl("Hello World"); wc.Controls.Add(hwLiteralControl);

4

2 回答 2

6

标题不是服务器 web 控件,而是 html 元素。如果您需要动态创建它:

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

container您要添加的控件在哪里。

于 2012-11-19T15:31:39.630 回答
2

我喜欢将文字字符串放入页面的方式是使用文字标签

默认.aspx:

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

默认.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 窗体,因此我会从 Microsoft 获得 NuGet 包“Antixss”。(在 Server.HtmlEncode 上使用 Antixss 的 Encoder.HtmlEnocde(),这就是为什么

以下是您将如何使用它:

默认.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);
  }
}
于 2012-11-19T15:57:17.560 回答