使用 c# 生成特定的 html 标记

本文关键字:html 标记 使用 | 更新日期: 2023-09-27 18:35:53

我有一个带有图片库的网站。我想动态地将图片添加到图库中。我有这个代码:

string[] files = Directory.GetFiles(Server.MapPath(@"images'gallery'projects"));
string temp = files[0];
for (int i = 1; i < files.Length; i++)
{
    HyperLink hp = new HyperLink();
    hp.ImageUrl = "images/gallery/projects/" + Path.GetFileName(files[i]);
    hp.NavigateUrl = "images/gallery/projects/" + Path.GetFileName(temp);
    Panel1.Controls.Add(hp);
    temp = files[i];
}

这会使用图片迭代文件夹并生成链接标签,但这不是我需要的。我正在尝试生成此标签:

<a href="images/gallery/picture_fullsize.jpg" 
   title="Caption for picture goes here">
    <img src="images/gallery/picture_thumbnail.jpg"/>
</a>

任何指示或解决方案将不胜感激。

使用 c# 生成特定的 html 标记

您现有的方法很棒,它是强类型,并且比自己创建链接更不容易出错。

如果要为标记添加标题,可以使用Attributes.Add方法。

var hp = new HyperLink();
hp.ImageUrl = "images/gallery/projects/" + Path.GetFileName(files[i]);
hp.NavigateUrl = "images/gallery/projects/" + Path.GetFileName(temp);
hp.Attributes.Add("title", "Caption for picture goes here");
Panel1.Controls.Add(hp);

我建议您使用模板控件(如中继器)解决此问题。似乎您已经准备好执行此操作,因为您正在使用可以充当绑定数据源的列表。应尽可能避免动态创建 html。

在此处查看更多内容:

http://msdn.microsoft.com/en-us/library/zzx23804(v=vs.85).aspx

使用 HtmlTextWriter。它允许您创建漂亮干净的 HTML,并且可以轻松地像您想要的那样执行嵌套标签。所以你的代码看起来像这样:

StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter)) //Always enclose in 'using' for cleaner code
for (int i = 1; i < files.Length; i++)
{
    //Write the starting 'a' tag
    writer.AddAttribute(HtmlTextWriterAttribute.Href, "images/gallery/projects/" + Path.GetFileName(temp));
    writer.RenderBeginTag(HtmlTextWriterTag.A); 
    //Write the starting 'img' tag
    writer.AddAttribute(HtmlTextWriterAttribute.Src, "images/gallery/projects/" + Path.GetFileName(files[i]));
    writer.RenderBeginTag(HtmlTextWriterTag.Img);
    //Close the 'img' tag
    writer.RenderEndTag();
    //Close the 'a' tag
    writer.RenderEndTag();  
}
var generatedHtml = stringWriter.ToString(); //The final HTML