【问题标题】:String.Format HTMLString.Format HTML
【发布时间】:2014-01-15 18:51:40
【问题描述】:

string.format 在下面的 html 上创建了一个非常奇怪的结果。我相信这与内联 if 块有关,但我还没有弄清楚。请帮忙!

String.Format(@"<input type='text' 
                       name='PostalCode' 
                       id='PostalCode' 
                       onfocus='if(this.value == '{0}') 
                                {{ this.value = ''; }}' 
                       value='{1}' 
                       class='enter-postal' />", 
              "Enter Postal Code", "Enter Postal Code")

【问题讨论】:

  • 你说的奇数是什么意思?它产生的正是你告诉它产生的东西。
  • 它在做什么,你想让它做什么?
  • 您在 JavaScript 代码中使用 ',即使它被用作分隔符:使用 "(并转义它)。此外,我建议编写一个帮助类来构建具有属性的 HTML 标记...
  • 您可以通过不通过字符串文字定义 HTML 来避免整个问题。通常有更好的方法来解决这个问题,例如使用某种形式的标记文件或模板来代替。如果您能够在适当的 HTML 编辑器中编写 HTML,那么这样的错误就会变得明显,并且您也不需要处理多层字符转义的问题。
  • 对于一些简单的事情,为什么不直接将“输入邮政编码”硬编码到字符串中 - 这将减少您与“和”以及转义的混淆。而且您不需要使用 {0} 和{1},如果替换字符串相同 - 只需使用 {0} 并且只有一个“输入邮政编码”实例

标签: c# html string.format


【解决方案1】:

我可以看到它没有什么奇怪的,所以在不知道你期望什么的情况下,我不确定问题是什么。

我确实注意到onfocus='if(this.value == '{0}') {{ this.value = ''; }}' 中的一个错误,即属性中有单引号,还有 JS,这将不起作用。试试:

String.Format(@"<input type='text' name='PostalCode' id='PostalCode' onfocus=""if(this.value == '{0}') {{ this.value = ''; }}"" value='{1}' class='enter-postal' />",
"Enter Postal Code", "Enter Postal Code")

使用变量而不是文字,您还需要使用.Replace("'", "\\'"),这样您就不会因为数据中的撇号而最终遇到同样的问题。

【讨论】:

    【解决方案2】:

    这里试试这个:

    String.Format(@"<input type='text' name='PostalCode' id='PostalCode' onfocus='if(this.value == ""{0}"") {{ this.value = """"; }}' value='{1}' class='enter-postal' />", "Enter Postal Code", "Enter Postal Code")
    

    【讨论】:

    • @TheC4Fox 严格来说,需要 不同 转义字符;为了逃避",使用""
    【解决方案3】:

    在您的 onFocus 属性中,使用转义的双引号。

    String.Format(@"<input type='text' 
                           name='PostalCode' 
                           id='PostalCode' 
                           onfocus=\"if(this.value == '{0}') 
                                {{ this.value = ''; }}\" value='{1}' 
                           class='enter-postal' />", 
                  "Enter Postal Code", "Enter Postal Code")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多