我正在尝试在我正在设计的用户控件后面的代码中以编程方式生成一些 html。
我一直在环顾四周,但似乎无法弄清楚如何为我将要显示的内容动态生成一些 h1 标签。
它只是一个带有特殊属性集的标签吗?
var h1 = new HtmlGenericControl("h1");
h1.InnerHtml = "header content";
您还可以使用:
<h1 runat="server" />
您可以使用标签或文字控件,如下所示:
Label1.Text = "<h1>HI All</h1>";
或者
string heading = "HI All";
Label1.Text = string.Format("<h1>{0}</h1>", heading);
您可以通过以下方式轻松做到这一点
literall.Text ="<h1>ABCD</h1>";
让,你有一个这样的服务器控件,
<div class="cls" runat="server" id="MyServerControlDiv"></div>
使用HtmlGenericControl
var h1 = new HtmlGenericControl("h1");
h1.InnerHtml = "header content";
MyServerControlDiv.Controls.Add(h1);
使用LiteralControl
MyServerControlDiv.Controls.Add(new LiteralControl("<h1>"));
MyServerControlDiv.Controls.Add(new LiteralControl("header content"));
MyServerControlDiv.Controls.Add(new LiteralControl("</h1>"));
使用文字控制,Literal1.Text = "<h1>" + texttodisplay + "</h1>";
就个人而言,我更喜欢为它上课。
public class H1: HtmlGenericElement
{
public H1(): base("h1") { }
}
或许。
public class H: HtmlGenericControl
{
public H(int size): base("h" + size) { }
}
让我们假设您的设计中有一个 asp 占位符:
PlaceHolder placeHolder1 = new PlaceHolder();
string yourText = "Header Text";
Label myLabel = new Label();
myLabel.Text = "<h1>" + yourText + "</h1>";
PlaceHolder1.Controls.Add(myLabel);
或者
PlaceHolder1.Controls.Add(new LiteralControl ("<h1>")) // and likewise
for </h1>.
只要您不想插入任何子控件,就可以使用通用 HTML 控件或文字控件。如果您确实需要附加一个子控件(例如标签),那么您需要将您的标题创建为 Web 控件,如下所示:
WebControl H2Header = new WebControl(HtmlTextWriterTag.H1);
然后你可以像这样附加一个子控件:
Label labHeader = new Label() { Text = "Some Header Text" };
H2Header.Controls.Add(labHeader);
我一直喜欢使用的:
在前端放置所需的 html 控件,例如
<h1 id="title" runat="server">XXX</h1>
然后在后面的代码中声明所需的控件,例如
protected HtmlGenericControl PublicTitle
{
get
{
return this.title;
}
}
代码中的任何地方都可以使用控件
PublicTitle.InnerHtml = state.Equals("win") ? "Win" : "Lost";
PublicTitle.Attributes.Add("src", "https://xxxx");