在<a> using C#</a>中添加双引号

时间:2010-03-11 16:21:23

标签: c#

我在c#

中有以下代码
        if (Session["cmpDictionaryTitle"]!= null)
                {
                    downloadLinks.Text += @"<li><a onclick='pageTracker._trackEvent('dictionary', 'spanish');' target ='_blank' href=" + Session["cmpDictionaryTitle"] + ">" + GetResourceString("c_DictionaryPDFName") + "</a></li>";
                }

我正在尝试制作以下<a>链接,如下所示:

<li><a target ="_blank" href="/spa/Images/Diccionario_tcm25-18044.pdf" onclick="pageTracker._trackEvent('dictionary', 'spanish');">Diccionario de Español-Inglés GRATIS</a></li>

然而,当html页面渲染时,我的c#代码产生低于输出,原因是我无法在我的代码中放置正确的引号。

<li><a );="" spanish="" ,="" dictionary="" onclick="pageTracker._trackEvent(" href="/spa/Images/Diccionario_tcm25-18044.pdf" target="_blank">Diccionario de Español-Inglés GRATIS</a></li>

您能否建议我如何在背后的代码中实现上述结果。

谢谢&amp;最诚挚的问候

4 个答案:

答案 0 :(得分:5)

要在代码中构建的字符串中使用双引号,请执行以下操作:

  • 转义双引号字符 像这样:“\”“。​​
  • 像这样逃避双引号字符: “”“(使用@创建逐字时 string literal)。

示例:

// These are both rendered as <a target="_blank" />
Response.Write("<a target =\"_blank\" />");
Response.Write(@"<a target =""_blank"" />");

这是您使用反斜杠转义双引号表示所有属性的原始代码(我选择了第一种方法并删除了前导@):

if (Session["cmpDictionaryTitle"]!= null) {
    downloadLinks.Text += "<li><a onclick=\"pageTracker._trackEvent('dictionary', 'spanish');\" target =\"_blank\" href=\"" + Session["cmpDictionaryTitle"] + "\">" + GetResourceString("c_DictionaryPDFName") + "</a></li>";
}

最后,我建议阅读Jon Skeet的优秀文章“Strings in .NET and C#。”

答案 1 :(得分:1)

<a 
    onclick="pageTracker._trackEvent('dictionary', 'spanish');" 
    target ="_blank" 
    href="<%= Server.HtmlEncode((string)Session["cmpDictionaryTitle"]) %>">
    <%= Server.HtmlEncode(GetResourceString("c_DictionaryPDFName")) %>
</a>

更新:

您还可以使用XElement构建代码:

var tag = new XElement("li", 
    new XElement("a",
        new XAttribute("onclick", "pageTracker._trackEvent('dictionary', 'spanish');"),
        new XAttribute("target", "_blank"),
        new XAttribute("href", Session["cmpDictionaryTitle"]),
        new XText(GetResourceString("c_DictionaryPDFName"))
    )
);

downloadLinks.Text += tag.ToString();

答案 2 :(得分:1)

我使用以下代码解决了上述问题:

downloadLinks.Text = string.Format("<li> <a target=\"_blank\" href=\"{0}\" onclick=\"pageTracker._trackEvent('dictionary','spanish');\">{1}</a> </li>",Session["cmpPDFLink"],GetResourceString("c_DictionaryPDFName"));

干杯!

答案 3 :(得分:0)

您的第一个示例是使用单引号作为属性引号,并在值本身内,因此只需将其中一个更改为使用双引号,例如:

<a onclick="pageTracker._trackEvent('dictionary', 'spanish');" ...