javascript 而非 ASP.net 中的“<%=value%>”
"<%=value%>" in javascript not ASP.net
我开始使用 chartjs,我可以在代码如下所示的位置指定选项:
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
问题是 <% %> 被解释为 ASP.NET 代码。如何避免冲突?
你可以把它放在一个字符串中,有点像转义它。
关闭标签似乎不起作用,因此您可以连接两个字符串,并使用常量使其更易于阅读:
<%
const string OPEN = "<%=";
const string CLOSE = "%" + ">";
%>
legendTemplate : "<ul class=\"<%=OPEN%>name.toLowerCase()<%=CLOSE%>-legend...
或者改为在 javascript 中执行,但这会使在源代码中更难看到 HTML:
var OPEN = "<" + "%" + "=";
var CLOSE = "%" + ">";
legendTemplate: "<ul class=\"" + OPEN + "name.toLowerCase()" + CLOSE + "-legend... "
另一种选择是对其中一个字符使用不同的表示形式,可能是百分比。你可以做 5
或其他表示(EDIT:不要使用 5
,而是使用 \x25
或 \u0025
- 看起来像八进制正在逐步淘汰 javascript):
legendTemplate = "<ul class=\"<\x25=name.toLowerCase()\x25>-legend... "
或者可能是更好的答案,如果您在 javascript 的这个特定片段中没有使用任何服务器代码,只需将其移出到 .js 文件即可。
我开始使用 chartjs,我可以在代码如下所示的位置指定选项:
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
问题是 <% %> 被解释为 ASP.NET 代码。如何避免冲突?
你可以把它放在一个字符串中,有点像转义它。
关闭标签似乎不起作用,因此您可以连接两个字符串,并使用常量使其更易于阅读:
<%
const string OPEN = "<%=";
const string CLOSE = "%" + ">";
%>
legendTemplate : "<ul class=\"<%=OPEN%>name.toLowerCase()<%=CLOSE%>-legend...
或者改为在 javascript 中执行,但这会使在源代码中更难看到 HTML:
var OPEN = "<" + "%" + "=";
var CLOSE = "%" + ">";
legendTemplate: "<ul class=\"" + OPEN + "name.toLowerCase()" + CLOSE + "-legend... "
另一种选择是对其中一个字符使用不同的表示形式,可能是百分比。你可以做 5
或其他表示(EDIT:不要使用 5
,而是使用 \x25
或 \u0025
- 看起来像八进制正在逐步淘汰 javascript):
legendTemplate = "<ul class=\"<\x25=name.toLowerCase()\x25>-legend... "
或者可能是更好的答案,如果您在 javascript 的这个特定片段中没有使用任何服务器代码,只需将其移出到 .js 文件即可。