在运行时插入HTML
本文关键字:HTML 插入 运行时 | 更新日期: 2023-09-27 18:07:22
我需要编写一些代码,将html的3个"块"中的一个选择放在页面上的指定位置。我该怎么做呢?
我想我可以使用单值数据绑定,但我不认为这是正确的方法。
我正在使用ASP。净c#。
编辑:这是它可能的样子:
MapPlaceholder.InnerHtml = @"<div class="mapContainer smallMap" id="smallGrid" runat="server" visible="false">
<div id="node1" class="gridBox" runat="server">
</div>
<div id="node2" class="gridBox" runat="server">
</div>
<div id="node3" class="gridBox" runat="server">
</div>
<div id="node4" class="gridBox" runat="server">
</div>
<div id="node5" class="gridBox" runat="server">
</div>
<div id="node6" class="gridBox" runat="server">
</div>
<div id="node7" class="gridBox" runat="server">
</div>
<div id="node8" class="gridBox" runat="server">
</div>
<div id="node9" class="gridBox" runat="server">
</div>
</div>";
在.aspx
页:
<div id="MapPlaceholder" runat="server"></div>
还有一件事,我如何告诉c#在字符串中实际写"
?当前它不能工作,因为它在找到第一个"
时停止。
MapPlaceholder.InnerHtml = block1;
HtmlGenericControl smallGrid = (HtmlGenericControl)MapPlaceholder.FindControl("smallGrid");
containerName = "smallGrid";
smallGrid.Visible = true;
smallGrid.Attributes["Style"] = "background-image:url('" + du.getMapBackgroundImage(mapId) + "'); " + "width:300px; height:300px;";
containerName = "smallGrid";
这就是我想做的,但FindControl总是返回null。我调试了这个,似乎html代码正在添加,但只有在页面加载结束后。无论如何,我可以告诉c#"渲染"div,这样我就可以像我需要的那样使用它?
要在代码中使用双引号,您需要在使用@
时使用两个双引号,因此它将是:
MapPlaceholder.InnerHtml = @"<div class=""mapContainer smallMap"" id=""smallGrid"" runat=""server"" visible=""false"">
<div id=""node1"" class=""gridBox"" runat=""server"">
</div>
<div id=""node2"" class=""gridBox"" runat=""server"">
</div>
<div id=""node3"" class=""gridBox"" runat=""server"">
</div>
<div id=""node4"" class=""gridBox"" runat=""server"">
</div>
<div id=""node5"" class=""gridBox"" runat=""server"">
</div>
<div id=""node6"" class=""gridBox"" runat=""server"">
</div>
<div id=""node7"" class=""gridBox"" runat=""server"">
</div>
<div id=""node8"" class=""gridBox"" runat=""server"">
</div>
<div id=""node9"" class=""gridBox"" runat=""server"">
</div>
</div>";
对于你最初的问题:有三个字符串与可能的"块",然后分配适当的字符串:
string block1 = @"<div class=""mapContainer smallMap"">block 1</div>......";
string block2 = @"<div class=""mapContainer smallMap"">block 2</div>......";
string block3 = @"<div class=""mapContainer smallMap"">block 3</div>.......";
switch (myCond) {
case 1:
MapPlaceholder.InnerHtml= block1;
break;
case 2:
MapPlaceholder.InnerHtml= block2;
break;
case 3:
MapPlaceholder.InnerHtml= block3;
break;
}
编辑:看起来你需要不同的方法。首先,将.aspx
中的所有块直接放在MapPlaceholder
控件下:
<div id="MapPlaceholder" runat="server">
<div class="mapContainer smallMap" id="smallGrid1" runat="server" visible="false">
block 1 contents here...
</div>
<div class="mapContainer smallMap" id="smallGrid2" runat="server" visible="false">
block 2 contents here...
</div>
<div class="mapContainer smallMap" id="smallGrid3" runat="server" visible="false">
block 3 contents here...
</div>
</div>
有了这个,只需根据条件显示适当的控件:
switch (myCond) {
case 1:
smallGrid1.Visible = true;
break;
case 2:
smallGrid2.Visible = true;
break;
case 3:
smallGrid3.Visible = true;
break;
}
这样,您就不必与原始HTML字符串混淆,可以从.aspx
更改布局,这更方便。
在页面加载中你可以动态插入你需要的内容。
提示:你可以在它的Text属性上插入一个标签,一个html块,javascript或jquery代码
Label myLabel = new Label();
myLabel.Text = @"html text";
Page.Controls.Add(myLabel);
如果问题真的是"如何将HTML块放置到页面上"作为一个(非常基本的)示例,您可能会发现下面的内容很有用:
ASPX代码:
<div runat="server" id="mydiv"></div>
c#代码:
mydiv.InnerHtml = "<span>hi</span>";
或
HtmlGenericControl c = new HtmlGenericControl("span");
c.InnerHtml = "hi";
mydiv.Controls.Add(c);
DataBinding更多用于将动态值推送到页面内容,例如数据库。
您可能需要PlaceHolder控件:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.placeholder.aspx<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
protected void Button1_Click(object sender, EventArgs e)
{
Label NewLabel = new Label();
NewLabel.Text = "Hello World!";
PlaceHolder1.Controls.Add(NewLabel);
}
您可以添加HTML标签与字符串的连接在标签文本或其他
labelc.text="Html tags code here";