我正在将一个旧脚本从ASP转换为ASP.NET,并希望得到一些建议。原始ASP脚本使用Response.Write输出有关执行期间发生的事件的信息。我在ASP.NET中重写了整个内容,但对于我来说,作为一名老派的C程序员,这对我来说是新的。工作要求包括使用ASP.NET的VB风格,顺便说一句。
我最初设置了一个TextBox并编辑了text属性来转储我的最终报告。现在他们想要不同的颜色以适应不同的消息重要性,我发现TextBox只能为所有行做一种颜色。我回到旧的备用RW,但是我得到一条消息,它没有被声明,并且从环顾四周看到它是一个问题,因为我从后面的代码调用它,这是从HTML元素的'范围'页面本身。
我的问题是,向网页输出信息的最佳方式是什么,不同的线条与网页的代码隐藏不同?
次要问题 - 如果我误解了任何事情,请随意纠正我的想法。 :)
谢谢!
答案 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