2016-08-04 29 views
-1

注意:出現此問題的原因是頁面的渲染事件被覆蓋,這反過來又導致了.net錯誤顯示,而該顯示將顯示爲反而顯示垃圾,並且沒有看到班上的編碼錯誤。如何在C#頁面中編寫調試信息


我想將調試信息放在C#網頁上。我做了一個包含數組的靜態類,並在代碼中的不同位置添加了調試消息。該類有一個get方法返回一個串聯所有數組元素的字符串。在頁面底部我有:

 
     </body> 
    <!--debug=<%=debugging.get()%> --> 
    </html> 
這總是搞砸了頁面。整個頁面顯示垃圾。如果我使用如下的文本常量,它可以正常工作:
 
     </body> 
    <!--debug=<%="xxx"%> --> 
    </html> 
我在想這可能是unicode問題或其他問題。我嘗試過轉換,無法使其正常工作。該類是:

using System; 

public static class debugging { 
    public static String[] messages; 

    public static void add(String v) { 
    Array.Resize(ref messages, messages.Length + 1); 
    messages[messages.Length - 1] = v; 
    } 

    public static String get() { 
    String s = ""; 
    for (int i = 0; i < messages.Length; i++) s += messages[i] + "\r\n"; 
    return s; 
    } 
} 

我該如何得到這個工作?

+0

的改進版本,如果我使用任何代碼<% and %>之間的一切,如落入代碼,並使用的Response.Write,頁面始終顯示垃圾桶。使用常量是可以的,但沒有變量。不過,我能夠顯示連接字符串。 – subjectivist

+0

我嘗試使用小寫字符串而不是類中的字符串。 .ConnectionStrings的信息[zz] .ConnectionString表示返回一個小寫字符串。沒有不同。不過,我可以使用<%= .ConnectionString%>。 – subjectivist

+0

你不應該把你的類放在'System'命名空間中。使用你自己的名字空間。常用格式包括「MyCompany.MyProject」,「MyProject」和「MyCompany.MyProject.MySubproject」。 – mason

回答

1

你的課是越野車,可能這就是你說垃圾的原因。您的message參數會按原樣拋出異常。這是一個工人階級。

public static class debugging 
{ 
    public static String[] messages = null; 

    public static void add(String v) 
    { 
     if (messages == null) 
      messages = new string[1]; 
     else 
      Array.Resize(ref messages, messages.Length + 1); 

     messages[messages.Length - 1] = v; 
    } 

    public static String get() 
    { 
     if (messages == null) 
      return string.Empty; 
     String s = ""; 
     for (int i = 0; i < messages.Length; i++) s += messages[i] + "\r\n"; 
     return s; 
    } 
} 

,這裏是該類

public static class debugging 
{ 
    public static List<string> cMsg = new List<string>(); 

    public static void add(String v) 
    { 
     cMsg.Add(v); 
    } 

    public static String get() 
    { 
     StringBuilder sbOnMe = new StringBuilder(); 

     foreach (var One in cMsg) 
      sbOnMe.AppendLine(One); 

     return sbOnMe.ToString(); 
    } 
} 
+0

這個班沒有什麼問題。這是一個簡單的理由。問題發生在任何類型的變量使用的頁面上,無論該類是否被使用。 – subjectivist

+0

@subjectivist但是我在本地製作一個頁面並對其進行測試,它現在按照您的工作原理工作 - 它的拋出錯誤 - 然後我做出來並測試它並找到工作,頁面不會中斷。 – Aristos

+0

@subjectivist它不簡單,它的越野車和複雜。我做的很簡單。 – Aristos

0

返回的文本可能與html或註釋標記混淆。

也許你可以嘗試這樣

<div style="display:none;"><%=debugging.get()%></div>

編輯:

您也可以嘗試的HTMLEncode可能做的伎倆。

<%=HttpUtility.HtmlEncode(debugging.get())%>

+0

沒有區別。 – subjectivist

0

也許把輸出上的PRE標籤,而不是一個HMTL有何評論?

</body> 
<pre style="display:none;">debug=<%=HtmlUtility.HtmlEncode(Eval(debugging.get())) %></pre> 
</html> 

MAYBE它可以這樣工作。

+0

這也行不通。對變量或函數的任何引用都會導致頁面顯示垃圾。 – subjectivist