Stringbuilder将%添加到URL的结尾

时间:2012-04-16 11:42:28

标签: c# asp.net stringbuilder

我的代码中构建了一个字符串。当我调试我的页面时,网址不正确。例如,当点击我页面上的链接时,谷歌的网址是这样的。 http://www.google.co.uk%22%22/

请参阅下面的代码。

sb.Append(@"<a href=" + r["Url"].ToString() + "\"" + @""" target=""blank"">");
sb.Append(@"<img src=""../ShowImage.ashx?id=" + r["Image_id"] + "\" title=\"" + r["Title"].ToString() + "\"  alt=\"" + r["Alt_text"].ToString() + "\"  >");
sb.Append("</a>");

我是如何构建字符串的?

感谢。

3 个答案:

答案 0 :(得分:1)

您将使用\"\"")转义的引号与使用“(@""")转义的引号混合并且有太多。请尝试此选择:

sb.Append(@"<a href=""" + r["Url"].ToString() + @""" target=""blank"">");

答案 1 :(得分:0)

%22"

的字符串编码版本

尝试:

sb.Append(@"<a href=" + r["Url"].ToString() + "\ + @""" target=""blank"">");

答案 2 :(得分:0)

那是因为您在URL之前没有任何引号,但在它之后有两个引号。可以省略引号(对于没有空格的值),但是你必须省略它们。省略起始引号时,末尾的引号(或本例中的标记)将成为值的一部分。

另外,当你有StringBuilder时,为什么要连接字符串?直接使用Append方法而不是先连接字符串,然后附加结果。

sb
  .Append("<a href=\"").Append(r["Url"].ToString()).Append("\" target=\"blank\">")
  .Append("<img src=\"../ShowImage.ashx?id=").Append(r["Image_id"]).Append("\" title=\"").Append(r["Title"].ToString()).Append("\"  alt=\"").Append(r["Alt_text"].ToString()).Append("\">")
  .Append("</a>");