Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
4 / 4 / 2
Регистрация: 06.07.2012
Сообщений: 95

Отображение html разметки через StringBuilder

03.08.2012, 19:06. Показов 3158. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заношу в StringBuilder html разметку, которая по идеи должна потом отображатся во вьюхе:

C#
1
2
3
4
5
6
7
8
        private static void Build(Comment item, ref StringBuilder sb)
        {
            sb.Append("<div class=\"sd\">" + item.Comment1);
            foreach (Comment ii in db.Comments)
                if (ii.ParentCommentId == item.Id)
                    Build(ii, ref sb); // рекурс
            sb.Append("<div>");
        }
А потом выношу содержимое екземпляра StringBuilder через хелпер
Но вмсето html разметки появляются вот такие коды:

HTML5
1
&lt;div class=&quot;sd&quot;&gt;Агентство интернет-рекламы &quot;Prodex&quot;
тойсть вместо <div class="sd"> выводится &lt;div class=&quot;sd&quot;&gt;. Как можна решить эту проблему??
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.08.2012, 19:06
Ответы с готовыми решениями:

Отображение HTML разметки в DataGrid
Всем доброго времени суток. Недавно начал изучать Silveright(4), в проекте в датагрид отображаю табличку из БД MSsql, но вот загвоздка в...

Некорректное отображение HTML-разметки в письме
Помогите найти ошибку, надо чтобы была ссылка mail($_POST,'Регистрация ','Ссылка для активации:&lt;a href=&quot;...

Некорректное отображение разметки
У меня появилась проблема, при которой криво отображается разметка. Приведу пример: два телефона (один эмулятор, второй собственный), с...

5
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
03.08.2012, 19:47
AlexandrVavilow, для вывода без декодирования в безопасные символы используйте Html.Raw
1
4 / 4 / 2
Регистрация: 06.07.2012
Сообщений: 95
03.08.2012, 19:58  [ТС]
Это можна, но у меня создан html хелпер, который возвращает тип StringBuilder и процедура сделана рекурсивно, не хочется все пере рабатывать и темболее описывать это в представлении, используя Html.Raw. Может есть другие варианты? И в инете много примеров где явно StringBuilder без безопасного декодирования работает...
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
03.08.2012, 20:32
AlexandrVavilow, в принципе хелперы дорлжны возвращать MvcHtmlString, а не StringBuilder. Можно посмотреть код хелпера и его вызова?
0
4 / 4 / 2
Регистрация: 06.07.2012
Сообщений: 95
03.08.2012, 20:57  [ТС]
Цитата Сообщение от Alligieri Посмотреть сообщение
AlexandrVavilow, в принципе хелперы дорлжны возвращать MvcHtmlString, а не StringBuilder. Можно посмотреть код хелпера и его вызова?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Blog.Models;
using System.Text;
 
namespace Blog
{
    public static class HtmlHelperEx
    {
        static ASPNETDBEntities db = new ASPNETDBEntities();
        public static string Comm(this HtmlHelper html, Guid id)
        {
            StringBuilder sb = new StringBuilder();
            IQueryable<Comment> obj = (from ob in db.Comments where ob.PostId == id select ob);
            foreach (Comment item in obj)
            {
                if (item.ParentCommentId == null)
                {
                    Build(item, ref sb);
                }
            }
            return sb.ToString();
        }
 
        private static void Build(Comment item, ref StringBuilder sb)
        {
            sb.Append("<div class=\"sd\">" + item.Comment1);
            foreach (Comment ii in db.Comments)
                if (ii.ParentCommentId == item.Id)
                    Build(ii, ref sb); // рекурс
            sb.Append("</div>" + item.Comment1);
 
        }
    }
}
sb.ToString(); - может и ровняется MvcHtmlString, но я не понимаю как впихнуть Html.Raw в класс

вызов просто :

HTML5
1
@Html.Comm(com.PostId)
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
03.08.2012, 21:21
Замените
Цитата Сообщение от AlexandrVavilow Посмотреть сообщение
return sb.ToString();
на
C#
1
 return MvcHtmlString.Create(sb.ToString());
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.08.2012, 21:21
Помогаю со студенческими работами здесь

Отображение html кода через js
есть какой то класс блока в стилях, можно ли с помощью js несколько раз прорисовать его на страничке html? причем количество блоков должно...

генератор HTML/CSS разметки
Добрый день. Прошу подсказки: встала задача написать генератор HTML/CSS разметки, решил это реализовывать на Kohana. Но не вырисовывается ...

Основы разметки гипертекста HTML
Прошу помощи по выполнению лабораторной работы. Задание: 1. Используйте теги для работы с текстом. 2. Задайте странице цветной фон:...

Загрузка html-разметки в переменную
Есть такая функция у Jquery .load(), которая может загружать с удалённой страницы часть кода и вставлять его внутрь блока? В связи с этим...

Передача html разметки - кракозябры в коде?
Сайт на фрамеворке, но это не суть. Опишу проблему. В контролере формируется html код. Там все нормально. Скрин 1. Потом он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru