如何在C#页面中编写调试信息

时间:2016-08-04 19:25:45

标签: c# asp.net

注意:发生此问题是因为正在为页面覆盖渲染事件,这反过来导致.net错误显示本来可见而显示垃圾,并且没有看到类中的编码错误。

我想将调试信息放在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;
  }
}

我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

返回的文字可能会搞乱html或评论标记。

也许你可以试试像

这样的东西

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

编辑:

您也可以尝试HTMLEncode,这可能会起到作用。

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

答案 2 :(得分:0)

可能将输出放在PRE标签而不是HMTL评论上?

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

可能会以这种方式运作。