如何在输出到 html 之前停止 asp.net 编码字符

本文关键字:asp net 编码字符 输出 html | 更新日期: 2023-09-27 18:35:50

我有一个为我生成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 中?

如何在输出到 html 之前停止 asp.net 编码字符

您的应用程序是 Web 窗体还是 MVC?

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

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

另请参阅特殊标记之间的差异 asp.net。

在 Web 窗体 ASP.NET 中,razor 语法无效,因此在字符串输出中停止字符串编码的方法是使用 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 特殊标签之间的差异!

你的代码对我有用:

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

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

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