C# 在asp.net中使用添加html元素
我需要一些人帮我弄清楚怎么做 我得到了这个图库(Gallerific)和一些存储在Flicker.com中的图像,所以我使用Flicker api获取图像,但仍然手动添加它们来测试图库 现在,我正在寻找一种好方法,在使用flicketapi获取图像后,将其插入html 我找到了这个并使用了这个函数C# 在asp.net中使用添加html元素,c#,asp.net,C#,Asp.net,我需要一些人帮我弄清楚怎么做 我得到了这个图库(Gallerific)和一些存储在Flicker.com中的图像,所以我使用Flicker api获取图像,但仍然手动添加它们来测试图库 现在,我正在寻找一种好方法,在使用flicketapi获取图像后,将其插入html 我找到了这个并使用了这个函数 Response.Write(GetDivElements()) 但这是在html的顶部添加div,而不是在body标记中 我的问题是: HtmlTextWriter=newhtmltextwrite
Response.Write(GetDivElements())代码>
但这是在html的顶部添加div,而不是在body标记中
我的问题是:
HtmlTextWriter=newhtmltextwriter(stringWriter)
是在服务器端构建html标记的好方法吗
除了Response.Write(“”)之外,还有更好的方法向html添加元素吗代码>
如果您使用的是旧样式的asp.net,而不是asp.net MVC,那么您可以创建一个id为runat=“server”的div。然后您可以直接写入html
aspx页
<div id = "DivINeedToAddStuffTo" runat="server" />
此外,我认为使用HtmlTextWriter创建Html标记没有任何问题,您可以尝试查看。这样,您可以创建图像控件的实例,然后将其添加到占位符中
Image myImg = new Image();
myImg.ImageUrl = "MyPicture.jpg";
myPlaceholder.Controls.Add(myImg);
下面是我需要加成时所做的
在我的页面中
<asp:PlaceHolder ID="MyPlaceholder" runat="server"></asp:PlaceHolder>
在我的代码背后
MyPlaceholder.Controls.Add(new Literal() { Text="<div>some markup</div>"});
添加(new Literal(){Text=“some markup”});
我这样做是因为:
1) 您可以将占位符放在页面结构中所需的位置
2) 通过在运行时向控件集合添加文字,可以防止ViewState因其内容而膨胀。您应该能够使用ASP文字控件:
foreach (var item in items)
{
Literal literal = new Literal();
literal.text = item.html; //Assuming the item contains the html.
MyPlaceholder.Controls.Add(literal);
}
您可以在呈现页面之前获得该代码
希望有帮助
保罗
编辑
对不起,我想我弄错了,我以为你有带图像链接的html,而不是实际图像本身,如果是这样的话,贾斯汀的答案会适合你。是的,我测试了它,我想要的是谢谢:)@samy,是的,它可以工作,但请检查你的视图状态。它包含div的内容。您已经有效地添加了两次标记。如果您想避免页面变大,请检查下面的答案。我不久前读到,可以将视图状态保存在不同的文件或数据库中吗?这种技术对大视图状态有帮助吗?据我所知,只有SessionState才有可能。ViewState包含页面控件的属性值。它在页面级别充当持久性介质。虽然有一半的时间它被垃圾弄得臃肿不堪。你必须非常小心,我看到的页面仅ViewState就有200000多个。有一些好的网站(例如)可以显示ViewState的内容。值得一看。
var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" };
ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;";
ctrl.Controls.Add(new Image
{
ImageUrl =
Page.ResolveUrl("image path here")
});
this.Controls.Add(ctrl);
var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" };
ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;";
ctrl.Controls.Add(new Image
{
ImageUrl =
Page.ResolveUrl("image path here")
});
this.Controls.Add(ctrl);