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 文件即可。