1

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

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>

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

4

3 回答 3

2

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

在这里查看更多:

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

于 2013-10-17T18:17:57.533 回答
2

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

如果要为标签添加标题,可以使用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);
于 2013-10-17T18:30:22.737 回答
1

使用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
于 2013-10-17T18:15:16.083 回答