我有一个为我生成javascript代码的函数。
<img src="abc.png" alt="hello" onclick="<%: getOnCilckJS(arg) %>" />
c#code
protected String getOnCilckJS(int arg)
{
if (arg==1)
{
return "alert('hello world');";
}
else
{ return "alert('hello universe');";
}
}
除了加载页面时,一切正常,asp.net将单引号'
转换为编码的html字符串('
)
如何避免这种情况并在html中显示'
?
答案 0 :(得分:1)
您正在使用<%: %>
,其实际值为does encode。您正在寻找<%= %>
。
答案 1 :(得分:1)
您的申请是Web Forms还是MVC?
如果是MVC,您可以尝试使用Html.Raw(...)函数,如果是Web表单,则可以查看link。
答案 2 :(得分:1)
在ASP.NET WebForms中,剃刀语法无效,因此在字符串输出中停止字符串编码的方法是使用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标记语法输出您的值 - <%: %>
对字符进行编码,<%= %>
为原始输出! / p>
答案 3 :(得分:0)
您的代码对我有用:
但只需更改&lt;%:to&lt;%=(我自己发送参数)
<%@ 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');";
}
}
我收到了没有任何单引号的警告信息