我需要编写一些代码,在页面上的指定位置放置3个html“块”中的一个。我怎么能这样做?
我在想我可以使用单值数据绑定,但我不认为这是正确的方法。
我正在使用ASP.NET 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,这样我可以像我需要的那样使用它吗?
答案 0 :(得分:3)
要在代码中使用双引号,在使用@
时需要使用其中两个,因此它将是:
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
的布局,这样更方便。
答案 1 :(得分:1)
您可以动态插入所需内容。
提示:您可以在Text属性上插入带有html块,javascript或jquery代码的标签
Label myLabel = new Label();
myLabel.Text = @"html text";
Page.Controls.Add(myLabel);
答案 2 :(得分:0)
如果问题确实是“如何将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更适用于将动态值推送到页面内容,例如数据库。
答案 3 :(得分:0)
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);
}
答案 4 :(得分:0)
您可以添加HTML标记,并在标签文本或其他文本中连接字符串
labelc.text="Html tags code here";