【问题标题】:ASP.NET: single and double quotes inside the text property of a LiteralASP.NET:文字的文本属性内的单引号和双引号
【发布时间】:2009-09-04 12:07:34
【问题描述】:

简单的问题,我知道,但我似乎无法找到一种方法将单引号和双引号都放入 asp.net 中 Literal 的文本属性的字符串中

<asp:Literal runat="server" id="Literal1" Text="This is my "text", isn't it pretty" />

例如上面代码中的sn -p。该字符串在“text”周围的第一个双引号处结束。我知道我可以用单引号替换它们(或使用所有双引号并将字符串括在单引号中),但我不确定如何使用两者。转义引号似乎不起作用。

当然,在代码隐藏上设置字符串是一种选择,我可以在其中转义双引号,但我一直认为最好将静态文本保留在 aspx 上,而不是使代码隐藏混乱。

【问题讨论】:

    标签: asp.net formatting


    【解决方案1】:

    你可以试试 HTML 实体的引号:&amp;quot;

    <asp:Literal runat="server" id="Literal1" Text="This is my &quot;text&quot;, isn't it pretty" />
    

    【讨论】:

    • 是的,ASP.NET Web 窗体文件基本上是 XML 文件,正常的 XML 规则适用于它们。在这种情况下,您使用标准 XML 实体来转义引号。在相关说明中:要转义与号 (&amp;amp;),您将使用 &amp;amp;
    • facepalm 我是个白痴。我一直在使用这些。今天早上我一定吃了愚蠢的薄片,然后把它们全忘了。
    • 这实际上是 MS 似乎更喜欢的,因为如果您使用 IP 建议的技术并运行“生成本地资源”(格式化文本),它会在页面上产生这个结果。
    【解决方案2】:

    你可以使用:

     <asp:Literal id="literal1" runat="server">This is my "text", isn't it pretty</asp:Literal>
    

    这应该适合你

    【讨论】:

    • 这样设置的文本会被内置的全球化工具识别吗?
    • 缺少 id,但我最喜欢这个。 +1
    • 对不起,如果我知道我永远不需要从后面的代码中访问它,我经常不使用 ID,那么您最终不会在生成的代码中得到一个巨大的 ID .
    • 刚刚使用内置资源创建器尝试了这种风格,它确实拾取了字符串...并立即将它们设置为文字的文本属性,对双引号进行 HTML 编码。
    • Groovy,我刚刚发现了同样的事情,希望对您有所帮助,这就是您所追求的吗?
    【解决方案3】:

    你可以像这样在单引号内使用双引号:

    <asp:Literal runat="server" id="Literal1" Text='This is my "text", isnt it pretty' />
    

    但如果你想在文本中同时使用它们,最好的方法是在代码后面

    【讨论】:

      【解决方案4】:

      我建议使用转义字符,但我不知道如何使用这些内联字符。而是使用代码来初始化值。

      <asp:Literal runat="server" id="Literal1" Text="" />
      
      ...
      
      Literal1.Text = "This is my \"text\", isn't it pretty?";
      

      或者,您可以使用其他地方建议的 HTML 编码。

      <asp:Literal runat="server" id="Literal1" Text="Isn't &quot;it&quot; pretty?" />
      

      【讨论】:

      • 当然,这是我的后备方案,但我更喜欢将静态文本保留在前端,而不是代码隐藏。
      • Literal1.Text = System.Web.HttpUtility.HtmlEncode("这是我的\"text\",是不是很漂亮?");
      • 我认为反对意见来自阅读我原始问题的相关部分的人:“当然,在代码隐藏中设置字符串是一种选择,我可以在其中转义双引号,但是我一直认为最好在 aspx 上保留静态文本,而不是使代码隐藏混乱。”问题的最后一行。
      【解决方案5】:

      我想建议 string.format...

      ...

      Literal1.Text = string.format("{0}","这是我的文字,是不是很漂亮?";

      【讨论】:

      • 几个问题: 1. 这个问题有 2 年的历史了,有几个答案(包括一个接受的答案),虽然回答老问题还不错,但这是一个不好的选择,所以晚的。 2. 这必须在代码隐藏而不是 ascx 页面上完成,这是我在我的问题中提到的一种可能性。 3. 你的格式不好。 4. 你遗漏了一个右括号。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多