如何将结果以彩色输出到网页? (Response.Write替代?)

时间:2011-02-17 14:51:26

标签: asp.net vb.net code-behind

我正在将一个旧脚本从ASP转换为ASP.NET,并希望得到一些建议。原始ASP脚本使用Response.Write输出有关执行期间发生的事件的信息。我在ASP.NET中重写了整个内容,但对于我来说,作为一名老派的C程序员,这对我来说是新的。工作要求包括使用ASP.NET的VB风格,顺便说一句。

我最初设置了一个TextBox并编辑了text属性来转储我的最终报告。现在他们想要不同的颜色以适应不同的消息重要性,我发现TextBox只能为所有行做一种颜色。我回到旧的备用RW,但是我得到一条消息,它没有被声明,并且从环顾四周看到它是一个问题,因为我从后面的代码调用它,这是从HTML元素的'范围'页面本身。

我的问题是,向网页输出信息的最佳方式是什么,不同的线条与网页的代码隐藏不同?

次要问题 - 如果我误解了任何事情,请随意纠正我的想法。 :)

谢谢!

4 个答案:

答案 0 :(得分:3)

在我看来,Literal也是正确的方法,为了防止混乱,你可以用一些功能很好地包装它。

首先,让一个文字控件成为消息占位符:

<asp:Literal id="litMessages" runat="server" />

其次,使用CSS来获得更优雅和灵活的颜色......例如:

<style type="text/css">
.msg_information { color: blue; }
.msg_error { color: red; }
.msg_warning { color: purple; }
</style>

现在有了这个功能:

void AddMessage(string message, string type)
{
   string strHTML = string.Format("<div class=\"msg_{0}\">{1}</div>", type, message);
   litMessages.Text += strHTML;
}

最后在你的代码中的任何地方添加消息都有这样的代码:

AddMessage("method started successfully", "information");
AddMessage("Failed to do this: " + someErrorMessage, "error");
AddMessage("Value is empty", "warning");

通过将enum用于消息类型等,您可以使其更加优雅,但上述内容足以满足基本需求。 :)

通过将每条消息放在自己的<div>中,您可以自动将其放在自己的行中,并且可以使用CSS更轻松地控制每条消息。

编辑:我的代码是C#,但也可以轻松转换为VB.NET。

答案 1 :(得分:1)

为什么不根据输出的内容将Response.Write包裹在带有颜色属性的范围内? e.g。

Response.Write(String.Format(@"<span style=""color: #{0}"">{1}</span>", System.Drawing.ColorTranslator.ToHtml(Color.Red),yourMessage))

为了简单起见,你可以这样做:

private void ReponseWriteEx(string output, Color color)
{
    Response.Write(String.Format(@"<span style=""color: #{0}"">{1}</span>", System.Drawing.ColorTranslator.ToHtml(color),output))
}

然后调用它,例如ResponseWriteEx("Hello World!",Color.Blue);

答案 2 :(得分:0)

@Deverill,

您可以使用网格视图,每行都是一条消息吗?这样您就可以将颜色应用于网格视图。

答案 3 :(得分:0)

我不确定您为什么使用文本框而不是标签 Wince你使用Response.Write我将假设你不需要用户输入。 你最好的选择是文字控制 LiteralControl Class与标签(或文本框)不同,它可以包含任何html。这将允许您在所需的任何文本周围放置类。您可能必须在文字上设置一些选项以允许html