【问题标题】:JavaScript: how to set a value containing quotes inside a textboxJavaScript:如何在文本框中设置包含引号的值
【发布时间】:2015-07-10 04:26:00
【问题描述】:

我有一个 MVC 项目,我将数据存储在数据库中,我的一个视图包含用于编辑这些数据的文本框。

由于具体情况,我无法直接通过 TextBoxFor()、EditorFor() 等创建文本框,但必须使用 JavaScript 影响值,所以我要做的是在页面加载时在 javascript 代码中写入所需的值,并且稍后会触发此代码以影响文本框的值。

$("#textboxID").val("@HTML.Raw(Model.value)");

这可以正常工作,直到其中一个字符串包含引号。

当我直接输入时

$("#textboxID").val("@Model.value");

它将被 HTML 编码,引号写成> & quot;(没有空格)

我发现正确输出引号的唯一方法是用反斜杠 \ 转义它们,但我似乎找不到帮助者来做到这一点。 有解决办法吗?我做错什么了吗?

目前,我发现了一个受 Filipe Borges 建议启发的解决方法

@Html.Raw(Html.Encode(Model.Libelle).Replace(""", "\\\""))

这很丑陋,但至少它解决了问题,我感谢任何人提出更好的解决方案。

【问题讨论】:

    标签: javascript asp.net-mvc-5


    【解决方案1】:

    目前,我发现了一个受 Filipe Borges 建议启发的解决方法

    @Html.Raw(Html.Encode(Model.Libelle).Replace(""", "\\\""))

    这很丑陋,但至少它解决了问题,我感谢任何人提出更好的解决方案。

    【讨论】:

      【解决方案2】:

      解决方法:

      @Html.Raw(Html.Encode(Model.value).Replace(""", "\\\""))
      

      首先建议使用@Model.value.replace(""", "\\\"")\"替换为",但它不起作用,因为在mvc应用默认html编码后,该值仅包含"

      编辑: Souhaieb Besbes 的最终解决方案。编辑我的,以免出错。

      【讨论】:

      • 我发现了原因,该值不包含“”最初,只有在 mvc 应用默认的 html 编码之后,字符串 ""出现,所以这并不能解决我的问题。但是使用 @Html.Raw(Html.Encode(Model.Libelle).Replace(""", "\\\"")) 确实
      • @SouhaiebBesbes 太好了!然后发布您自己的问题的答案。它可以帮助其他人。
      【解决方案3】:

      您可以使用单引号显示双引号,如下所示:

      $("#textboxID").val('"'+@Model.value+'"');
      

      【讨论】:

      • 我的问题是我希望所有符号都显示得很好,我已经尝试过这种方法并且立即想到自己,如果下次有人输入单引号怎么办。
      • 没关系,应该可以,检查以下内容: text = " 'cdc' "; $("#textboxID").text('"'+text+'"');也会正常工作。
      • 我认为你弄错了我的情况,我在数据库中有一个可能包含引号的文本值,例如 (stringwith"quote) 使用 mvc razor 我将这个值写入 javscript 代码中,所以 $( "#textboxID").val("@HTML.Raw(Model.value)"); 变成 $("#textboxID").val("stringwith"quote");这破坏了javascript代码,我希望这次我能更好地解释自己
      • 是的,我明白了,为什么你认为它会坏
      • 因为里面有引号?
      猜你喜欢
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2016-11-09
      • 1970-01-01
      相关资源
      最近更新 更多