2013-10-18 32 views
0

我有一個函數可以爲我生成一個javascript代碼。如何在輸出到html之前停止asp.net編碼字符?

<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中?

回答

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

我收到了沒有任何單引號的提醒消息

1

您的應用程序是Web窗體還是MVC?

如果是MVC,你可以試試Html.Raw(...)函數,如果是Web Forms,你可以檢查這個link

0

在ASP.NET web表單的剃刀語法無效,從而停止在一個串的輸出的字符串編碼方式是使用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標記語法來輸出您的值 - <%: %>編碼字符和<%= %>是原始輸出!

Review the differences between ASP.Net special tags here

相關問題