需要帮助查找如何在asp.net中向web控件添加文本。如果可能的话,寻找最简单的解决方案,或者使用控件构建器,如果这很简单的话。
WebControl生成的示例html:
<h3>Hello World</h3>
到目前为止我最好的尝试示例:
WebControl wc = new WebControl(HtmlTextWriterTag.H3);
wc.????
下面回答至少两个版本:
HtmlGenericControl ...可以与var一起使用 var h3_hgc = new HtmlGenericControl(“h3”); h3_hgc.InnerText =“Hello World”;
LiteralControl,源自WebControl LiteralControl hwLiteralControl = new LiteralControl(“Hello World”); wc.Controls.Add(hwLiteralControl);
答案 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);
}
}