Как вывести результаты в цвете на веб-страницу? (Response.Write альтернатива?) - PullRequest
0 голосов
/ 17 февраля 2011

Я конвертирую старый скрипт из ASP в ASP.NET и хотел бы получить совет.Оригинальный ASP-скрипт использовал Response.Write для вывода информации о том, что произошло во время выполнения.Я переписал все это в ASP.NET, но для меня, как для программиста на С старой школы, это ново.Требования к работе включают использование VB-версии ASP.NET, между прочим.

Я изначально создал TextBox и отредактировал свойство text, чтобы вывести мой окончательный отчет.Теперь им нужны разные цвета для разной важности сообщения, и я обнаружил, что TextBox может делать только один цвет для всех линий.Я вернулся к старому резервному RW, но получаю сообщение о том, что оно не объявлено, и, осматриваясь, я вижу, что это проблема, потому что я вызываю ее из кода, который находится за ее пределами, и это «выходит за рамки» из элементов HTMLсама страница.

Мой вопрос заключается в том, каков наилучший способ вывода информации на веб-страницу с разными строками, отличающимися по цвету от кода страницы?

Вторичный вопрос - если я что-то неправильно понял, не стесняйтесьчтобы исправить мое мышление.:)

Спасибо!

Ответы [ 4 ]

4 голосов
/ 17 февраля 2011

Литерал - это правильный подход, на мой взгляд, чтобы избежать беспорядка, вы можете красиво обернуть его некоторыми функциями.

Во-первых, используйте один буквенный элемент управления, который будет заполнителем сообщений:

<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 голос
/ 17 февраля 2011

Почему бы просто не обернуть Response.Write в диапазон с атрибутом цвета, основанным на том, что вы выводите?например,

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);

0 голосов
/ 17 февраля 2011

Я не уверен, почему вы использовали текстовое поле, а не метку.
Так как вы использовали Response.Write, я собираюсь предположить, что вам не нужно вводить пользователя.Ваша лучшая ставка здесь - элемент управления Literal.
Класс LiteralControl В отличие от метки (или текстового поля) он может содержать любой HTML-код.Это позволит вам размещать интервалы с классами вокруг любого нужного вам текста.Возможно, вам придется установить некоторые параметры для литерала, чтобы разрешить HTML

0 голосов
/ 17 февраля 2011

@ Deverill,

Не могли бы вы использовать вид сетки, и каждая строка представляет собой сообщение?Таким образом, вы можете применять цвета к сетке.

...