0

我有一个为我生成 javascript 代码的函数。

<img src="abc.png" alt="hello" onclick="<%: getOnCilckJS(arg)  %>" />

c# 代码

protected String getOnCilckJS(int arg)
{
  if (arg==1)
  {
     return "alert('hello world');";
  }
  else
  {  return "alert('hello universe');"; 
  }
}

除了加载页面时一切正常 asp.net 将单引号转换'为编码的 html 字符串 ( &#39;)

我怎样才能避免这种情况并'出现在 html 中?

4

4 回答 4

1

您正在使用<%: %>,它实际上确实对值进行了编码。你正在寻找<%= %>.

另请参阅特殊标签 asp.net 之间的区别

于 2013-10-18T08:45:22.007 回答
1

您的应用程序是 Web 表单还是 MVC?

如果是 MVC,你可以试试 Html.Raw(...) 函数,如果是 Web Forms 你可以查看这个链接

于 2013-10-18T08:46:26.703 回答
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 编码和转换为&quot;并破坏 JavaScript 语法 - 使用该HtmlString()方法停止编码。

但是,如前面的回答中所述,避免使用 HtmlString() 只需使用适当的特殊 ASP.Net 标记语法来输出您的值 -<%: %>编码字符并且<%= %>是原始输出!

在此处查看 ASP.Net 特殊标签之间的区别

于 2016-11-29T09:31:28.403 回答
0

你的代码对我有用:

但只需将 <%: 更改为 <%= (我自己发送参数)

<%@ 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');";
            }
        }

我收到了没有任何单引号的警报消息

于 2013-10-18T08:52:13.137 回答