Html.Raw 和视图中的引号

问题描述 投票:0回答:1

我想将对象作为参数传递给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>

页面渲染的差异:

c# asp.net-mvc-4 razor
1个回答
0
投票

您正在尝试传递字符串文字作为函数参数,因此您需要将文本用双引号或单引号引起来(您缺少这部分)。由于所有这些都发生在 HTML 属性值内,因此该值也需要用引号引起来。您正在寻找的语法如下,其中“和”可以交换:

<a onclick="my_cool_function('@Html.Raw(Json.Encode(model))')"></a>

说实话,我不确定你是否需要

Html.Raw()
这里。

此外,由于所有嵌套的引号,如果引号出现在 Json 语法中,这将不起作用,因此您无法对字符串值或属性名称进行编码。如果你只需要包含数字的 Json 数组,应该没问题。

否则,您可能会将事物分成两个属性:

<a data-model='@Json.Encode(model)' onclick="my_cool_function(this.dataset.model)"></a>

您仍然需要单引号,因为 Json 可能包含双引号。

© www.soinside.com 2019 - 2024. All rights reserved.