【问题标题】:How to insert quotation mark in a string containg variables in C#如何在C#中包含变量的字符串中插入引号
【发布时间】:2010-11-10 08:25:11
【问题描述】:

我想在后面的 C# 代码中生成如下所述的字符串:

<a href="~/Online Exam/Question.aspx?id=1"></a>

我现在使用的代码如下所示:

string url= string.Format("\"~/Online Exam/Question.aspx?id={0}\"", id);
td.Text = "<a href=" + url + ">" + id + "</a>";

但我无法使用上述代码获得所需的输出。请帮我解决这个问题。

【问题讨论】:

  • 你得到了什么?代码看起来不错。
  • 尽管"&gt;" + id + "&lt;/a&gt;" 与样本不匹配。
  • 输出有什么问题?现在我假设 td 变量是你网页上的一个元素,所以我相信你应该使用 innerhtml 而不是 text。
  • td 是我动态生成的 TableCell。我想要的是在“td.text”中显示一个“id”作为链接,该链接将被定向到“url”并将包含“id”作为查询字符串

标签: c# .net string hyperlink escaping


【解决方案1】:

使用

string url= String.Format("~/Online Exam/Question.aspx?id={0}", id);
td.Text = String.Format("<a href=\"{0}\">{1}</a>", url, id);

或者如果您关心String.Format() 的性能(因为文化特异性):

string url= String.Concat("~/Online Exam/Question.aspx?id=", id);
td.Text = String.Format("<a href=\"{0}\">{1}</a>", url, id);

对!因为&lt;a&gt; 不会将~ 解析为应用程序根,只有&lt;asp:HyperLink&gt; 会。所以

td.Controls.Add(new HyperLink { Text = id, NavigateUrl= url });

【讨论】:

  • 尝试了代码,但存储在 td.text 中的输出是 localhost:51231/OnlineExam/Online%20Exam/~/Online
  • @Piyush:td 是服务器端控件吗?是&lt;asp:TableCell&gt;吗?
  • 是的,它是一个服务器端控件,我是从后面的代码生成的
  • +1 可能的最佳解决方案是添加服务器控制(超链接)而不是分配表格单元格的原始 HTML。这样 .NET 框架本身将处理所有的引号混乱。 :)
  • @Piyush - 解释您所说的“它不起作用”是什么意思,我们会尽力提供帮助。你得到错误?你看到空白单元格了吗?你看到里面有猫吗?请在评论中添加详细信息。
【解决方案2】:

可以尝试在最后一行设置引号,如:

string url= string.Format("~/Online Exam/Question.aspx?id={0}", id);
td.Text = "<a href=\"" + url + "\">" + id + "</a>";

也使代码更符合逻辑,因为您的变量 url 现在实际上只包含 url。

(未测试)

【讨论】:

  • 最好在两种情况下都使用String.Format,或者先使用String.Concat(),然后再使用String.Format()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
相关资源
最近更新 更多