提问人:alex_kart 提问时间:10/31/2023 最后编辑:Jackdawalex_kart 更新时间:11/6/2023 访问量:42
View 中的 Html.Raw 和引号
Html.Raw and quotes in View
问:
我想将对象作为参数传递给 View 中的事件,所以我编写了这样的代码onclick
<a href="#" onclick="my_cool_function(@Html.Raw(Json.Encode(model)))">cool action</a>
并且呈现的 HTML 页面具有不正确的 html 代码
但是当将双引号更改为单引号时,问题就消失了:<a href="#" onclick='my_cool_function(@Html.Raw(Json.Encode(model)))'>cool action</a>
页面呈现的区别:
我不明白为什么会这样。在这种情况下,也许存在一些更好的方法来将对象作为函数参数传递?
此问题最近几天出现。在此之前它工作正常,并且没有对组件进行任何更改(但我之前没有检查生成的html,也许浏览器之前可以正确处理这两种格式)
答:
0赞
BenderBoy
11/6/2023
#1
您正在尝试将字符串文字作为函数参数传递,因此您需要将文本括在双引号或单引号中(您缺少此部分)。由于所有这些都发生在 HTML 属性值中,因此此值也需要放在引号中。您要查找的语法如下,其中 “ 和 ' 可以互换:
<a onclick="my_cool_function('@Html.Raw(Json.Encode(model))')"></a>
Tbh,我不确定你甚至需要这里。Html.Raw()
此外,由于所有嵌套引号,如果引号出现在 Json 语法中,这将不起作用,因此无法对字符串值或属性名称进行编码。如果你只需要带有数字的 Json 数组,它应该没问题。
否则,您可能会将内容拆分为两个属性:
<a data-model='@Json.Encode(model)' onclick="my_cool_function(this.dataset.model)"></a>
您仍然需要单引号,因为 Json 可能包含双引号。
评论