2

在我的 asp.net 网站中,我有一个提供日志信息的文本框。我正在使用这个日志来显示错误、成功和其他信息。我想要做的是我想根据日志的类型在文本框中以颜色显示结果文本。例如;我想将错误显示为红色文本,成功显示为绿色等等。

我尝试了以下代码,但使用此代码会更改文本框整个内容的颜色。

    /// <summary>
    /// colorIndex (0 = default, 1 = red, 2 = green)
    /// </summary>
    /// <param name="logValue"></param>
    /// <param name="colorIndex"></param>
    private void writeToLog(string logValue, int colorIndex)
    {
        if (colorIndex == 0)
        {
            TextBox2.ForeColor = Color.Black;
        }
        else if(colorIndex == 1)
        {
            TextBox2.ForeColor = Color.Red;
        }
        else if(colorIndex == 2)
        {
            TextBox2.ForeColor = Color.Green;
        }

        TextBox2.Text = "[ " + DateTime.Now + "] " + logValue + Environment.NewLine + TextBox2.Text;

    }

其实我想要的输出如下:

在此处输入图像描述

您可以在上面的输出中看到同一个 texbox 中有三种不同颜色的文本。此输出实际上来自桌面应用程序。我想在 asp.net 网页中显示相同类型的输出?我该怎么做?请帮忙。提前致谢!!

4

5 回答 5

3

Thanks for the answers everyone! Like Knaģi said, since may client need not to edit the value in log,I thought use of WYSIWYG editors was unnecessary. So for solving my problem i used a div instead of textbox.

<div id = "log" style="border: thin solid #00CC99; width:844px; height:193px; overflow:auto;" runat= "server">
    </div>

And in my code behind i filled the log as:

private void writeToLog(string logValue, int colorIndex)
    {
        logValue = "[ " + DateTime.Now + "] " + logValue;
        if (colorIndex == 0)
        {
          string htmlCode = "<font style='color:black'>"+logValue+"</font><br/>";
          log.InnerHtml = htmlCode + log.InnerHtml;

        }
        else if(colorIndex == 1)
        {
            string htmlCode = "<font style='color:red'>" + logValue + "</font><br/>";
            log.InnerHtml = htmlCode + log.InnerHtml ;
        }
        else if(colorIndex == 2)
        {
            string htmlCode = "<font style='color:green'>" + logValue + "</font><br/>";
            log.InnerHtml = htmlCode + log.InnerHtml ;
        }



    }
于 2013-05-24T05:48:35.287 回答
2

在 asp.net 中,我认为 table 是最好的选择。您可以使用 id 和 class 更改文本颜色,并通过应用 css 来赋予样式

<table id="log">
 <tr><th>Response Type</th><th>Response Time</th><th>Response Data </th></tr>
 <tr class="error"><td></td><td></td><td></td></tr>
 <tr class="info"><td></td><td></td><td></td></tr>  
</table>

您需要通过 jQuery 或后面的代码添加行,我认为这对您很有帮助。

于 2013-05-23T10:09:08.400 回答
2

您不能使用简单的文本框。相反,您必须使用许多 WYSIWYG 编辑器之一。任何服务器端语言的包装器都有很多可供选择。

但是由于您的代码实际上并不需要用户能够修改此数据,因此您应该简单地使用正确的样式呈现 HTML 代码并应用overflow-y: auto; max-height:100pxCSS 样式,以便在内容太长时呈现滚动条。

于 2013-05-23T09:58:14.330 回答
1

您可以改用标签。这样,使用 html span标签渲染文本以​​定义不同的样式将变得简单易行。

    if (colorIndex == 0)
    {
        Lable2.Text += "<span style='color:Black'>Black information...</span><br/><br/>";
    }
    else if(colorIndex == 1)
    {
        Lable2.Text += "<span style='color:Red'>Red information...</span><br/><br/>";
    }
    else if(colorIndex == 2)
    {
        Lable2.Text += "<span style='color:Green'>Green information...</span><br/><br/>";
    }
于 2013-05-23T10:10:59.550 回答
0

您需要使用RichTextBox 或一些所见即所得的编辑器

于 2013-05-23T10:07:02.807 回答