注意:发生此问题是因为正在为页面覆盖渲染事件,这反过来导致.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;
}
}
我怎样才能让它发挥作用?
答案 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>
可能会以这种方式运作。