在运行时插入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,这样我就可以像我需要的那样使用它?

在运行时插入HTML

要在代码中使用双引号,您需要在使用@时使用两个双引号,因此它将是:

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";