#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
того, хотя … некоторые привычки умирают с трудом. На самом деле раньше мне больше нравилась@
форма, потому что она заставляла переменные появляться чаще-мне действительно не нравится заключать имена переменных в кавычки. Я бы рекомендовал оператору внести изменения, которые вы предлагаете.