Проблемы с HtmlContentBuilder

349
10 мая 2022, 08:20

Всем доброго времени суток.

Я пытаюсь генерировать HTML код на странице Razor при помощи функции C#. Дело в том что мне нужно генерировать таблицу из базы данных. Сейчас я делаю это так:

<div class="table-responsive">
    <table id="coursesDT" runat="server" class="table table-striped table-hover">
        <thead>
            <tr>
                @foreach (WA2.code.tables.TableHandler.Column i in Model.coursesTable.columns) {
                    <th>
                        @i.nameUI;
                    </th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (System.Data.DataRow i in Model.coursesTable.table.Rows) {
                <tr>
                    @foreach (WA2.code.tables.TableHandler.Column j in Model.coursesTable.columns) {
                        <th>@i[j.nameDB]</th>
                    }
                </tr>
            }
        </tbody>
    </table>
</div>

Что, конечно, даёт желаемый результат, но я хочу сделать это иначе. А именно писать вместо этого нечто вроде

@Model.sampleTable.generateHtml(); 

И в зависимости от объекта класса table всё само должно подставиться. Я пробовал реализовать это так:

public IHtmlContent generateHtml() {
        string testHtml = 
            @"<div class=""table - responsive"">
              < table id = ""coursesDT"" runat = ""server"" class=""table table-striped table-hover"">
                <thead>
                    <tr>
                        @foreach(WA2.code.tables.TableHandler.Column i in Model.coursesTable.columns)
                {
                            < th >
                                @i.nameUI;
                            </ th >
                        }
                    </tr>
                </thead>
                <tbody>
                    @foreach(System.Data.DataRow i in Model.coursesTable.table.Rows)
                {
                        < tr >
                            @foreach(WA2.code.tables.TableHandler.Column j in Model.coursesTable.columns) {
                                < th > @i[j.nameDB] </ th >
                            }
                        </ tr >
                    }
                    </tbody>
                </table>
            </div>";
        HtmlContentBuilder htmlBuilder = new HtmlContentBuilder();
        htmlBuilder.AppendHtml(testHtml);                        
        
        return htmlBuilder;
    }

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

Сейчас мне видится простейшим выходом исключить все конструкции foreach и строить HTML кастомно. Но я не уверен что проблема в них. Может проблема в том что мне приходилось дублировать кавычки? А может в том что razor в HtmlContentBuilder нельзя использовать.

В общем подскажите мне пожалуйста как лучше всего выйти из ситуации.

READ ALSO
IEnumerable перенести записи

IEnumerable перенести записи

есть функция которая возвращает записи из базы IEnumerable<Persons>

215
Можно ли создать InlineKeyboardMarkup в групповом чате?

Можно ли создать InlineKeyboardMarkup в групповом чате?

Если бот общается с пользователем в лс, то при сообщении /commands , бот все норм создает такую клавиатуру, а если в групповом, то выдает ошибку...

185
Хранение Токена (IdentityServer4) в базе данных (pgSQL)

Хранение Токена (IdentityServer4) в базе данных (pgSQL)

Мобильное приложение через IdentityServer подключается к микросервису и затем через API(s) к базе данныхВсе работает

203