在 ASP.NET WebForms 中,razor 语法无效,因此在字符串输出中停止字符串编码的方法是使用
HtmlString()
,例如内联语法是:
<%: new HtmlString(stringVariable) %>
下面是如何在 ASP.NET WebForm 页面上以 JavaScript 内联代码输出变量的示例。该代码示例将 C# 字符串数组输出到 JavaScript 数组中:
<script type="text/javascript">
var array = ["<%: new HtmlString(string.Join(@""",""", stringArray)) %>"];
</script>
通常,双引号字符是 html 编码并转换为
"
并破坏 JavaScript 语法 - 使用 HtmlString()
方法会停止编码。
但是,如前面的答案所述,为了避免使用 HtmlString(),只需使用适当的特殊 ASP.Net 标记语法来输出您的值 -
<%: %>
编码字符,<%= %>
是原始输出!
你的代码对我有用:
但只要改变<%: to <%= ( and I send the parameter myself)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xxxx.aspx.cs" Inherits="SampleAngularApp.xxxx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
**<img src="abc.png" alt="hello" onclick="<%= getOnCilckJS(11) %>" />**
</div>
</form>
</body>
</html>
服务器端
**protected string getOnCilckJS(int arg)**
{
if (arg == 1)
{
return "alert('hello world');";
}
else
{
return "alert('hello universe');";
}
}
我收到了没有任何单引号的警报消息