Возвращаемая строка в Blazor

#html #datatable #blazor #converters

Вопрос:

У меня есть функция, которая создает таблицу html из таблицы данных. Я прикрепил код ниже. Теперь мой вопрос в том, как я могу преобразовать свою строку в HTML-код в своем приложении Blazor?

Спасибо за ваши усилия. 🙂

 public static string ConvertDataTableToHtml(DataTable dt)
    {
        string html = "<table>";
        //add header row
        html  = "<tr>";
        for (int i = 0; i < dt.Columns.Count; i  )
            html  = "<td>"   dt.Columns[i].ColumnName   "</td>";
        html  = "</tr>";
        //add rows
        for (int i = 0; i < dt.Rows.Count; i  )
        {
            html  = "<tr>";
            for (int j = 0; j < dt.Columns.Count; j  )
                html  = "<td>"   dt.Rows[i][j].ToString()   "</td>";
            html  = "</tr>";
        }
        html  = "</table>";
        return html;
    }
 

Комментарии:

1. Вообще не создавайте такую строку. Вместо этого используйте синтаксис Razor. Ваш текущий код даже не генерирует допустимый HTML — любой специальный символ или вредоносное содержимое скрипта в этой таблице данных попадет в окончательный HTML. В лучшем случае, < операционная > в одной из ячеек в конечном итоге испортит таблицу. В худшем случае любой Javascript, хранящийся в таблице, будет выполнен

2. Хорошо, я попробую это отблагодарить вас.

3. Почему вы пытались создать строку в первую очередь, когда все ASP.NET Основные примеры использования бритвы?

Ответ №1:

Что бы ты ни пытался сделать, остановись. Это не тот путь. Вы должны принять удивительность Блейзора.

Это должно выглядеть примерно так (я не тестирую это, просто чтобы показать вам идею).:

Настольный компонент.бритва

 <table>
    <thead>
            <tr>
            @for (int i = 0; i < dt.Columns.Count; i  )
            {
                <td>@dt.Columns[i]</td>
            }
            </tr>
    </thead>
    <tbody>
        //add rows
        @for (int i = 0; i < dt.Rows.Count; i  )
        {
            <tr>
            @for (int j = 0; j < dt.Columns.Count; j  )
            {
                <td>@dt.Rows[i][j].ToString()</td>
            }
        }
    </tbody>
</table>

@code {
    [Parameter]
    DataTable dt {get; set;}
}
 

Родительский компонент.страница. бритва

 <TableComponent dt="@MyData"/>

@code
{
    DataTable MyData;  // Do something in override OnInitializedAsync  to fill your table.
}
 

Посмотрите на свой код построения строк, посмотрите на сексуально-сладкий эквивалент Блейзора и знайте, что Microsoft сделала самую крутую вещь, которая произошла с компьютерами за последние пару лет! 😀

Комментарии:

1. Некоторые косметические рекомендации: dt должно быть DataTable , свойства часто имеют то же имя, что и их тип. И "@MyData" может быть просто "MyData"

2. Да, вы правы. Я использовал dt это, чтобы ОП мог сопоставить то, что у него было, с тем, что я сделал. Что касается @MyData того, хотя … некоторые привычки умирают с трудом. На самом деле раньше мне больше нравилась @ форма, потому что она заставляла переменные появляться чаще-мне действительно не нравится заключать имена переменных в кавычки. Я бы рекомендовал оператору внести изменения, которые вы предлагаете.