如何在输出到 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字符串('
)之外,一切正常
如何避免这种情况并'
出现在 html 中?
您的应用程序是 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 编码并转换为"
并破坏 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');";
}
}
我收到没有任何单引号的警报消息