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

问题描述 投票:0回答:4
c# javascript html asp.net encoding
4个回答
1
投票

您正在使用

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

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


1
投票

在 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 编码并转换为

&quot;
并破坏 JavaScript 语法 - 使用
HtmlString()
方法会停止编码。

但是,如前面的答案所述,为了避免使用 HtmlString(),只需使用适当的特殊 ASP.Net 标记语法来输出您的值 -

<%: %>
编码字符,
<%= %>
是原始输出!

在此处查看 ASP.Net 特殊标记之间的差异


1
投票

您的应用程序是 Web Forms 还是 MVC?

如果是MVC,你可以尝试

Html.Raw(...)
功能,如果是Web Forms你可以查看这个链接


0
投票

你的代码对我有用:

但只要改变<%: 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');";
            }
        }

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

© www.soinside.com 2019 - 2024. All rights reserved.