我有一个MVC项目,我将数据存储在数据库中,其中一个视图包含用于编辑此数据的文本框。
由于具体细节,我不能直接通过TextBoxFor(),EditorFor()等创建文本框,但必须用JavaScript影响值,所以我要做的是在页面加载时在javascript代码中写入所需的值,此代码稍后被触发以影响文本框值。
$("#textboxID").val("@HTML.Raw(Model.value)");
这样可以正常工作,直到其中一个字符串中有引号。
当我直接输入
时$("#textboxID").val("@Model.value");
它将采用HTML编码,引号写为> & quot;
(没有cource空间)
我发现正确输出引号的唯一方法是使用反斜杠\
转义它们但是我似乎无法找到帮助它来做到这一点。
有解决方案吗?我做错了吗?
目前,我找到了一个灵感来自Filipe Borges建议的解决方法
@Html.Raw(Html.Encode(Model.Libelle).Replace(""", "\\\""))
这非常难看,但至少它解决了这个问题,我感谢任何人提出更好的解决方案。
答案 0 :(得分:1)
目前,我找到了一个灵感来自Filipe Borges建议的解决方法
@Html.Raw(Html.Encode(Model.Libelle).Replace(""", "\\\""))
它非常丑陋,但至少它解决了这个问题,我感谢任何人提出更好的解决方案。
答案 1 :(得分:0)
解决使用:
@Html.Raw(Html.Encode(Model.value).Replace(""", "\\\""))
首先建议使用"
将\"
替换为@Model.value.replace(""", "\\\"")
,但它不起作用,因为在mvc应用默认html编码后,该值仅包含"
。 / p>
编辑:Souhaieb Besbes的最终解决方案。编辑我的不是出错。
答案 2 :(得分:0)
您可以使用单引号显示双引号,如下所示:
$("#textboxID").val('"'+@Model.value+'"');