ASP.NET Core中没有TableDisplayFor HTML助手。但是,可以创建自己的HTML助手来生成表格。以下是一个简单的示例:
代码示例:
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
public static class CustomHtmlHelper
{
public static IHtmlContent TableDisplayFor(this IHtmlHelper htmlHelper,
Expression>> expression)
{
var table = new TagBuilder("table");
table.AddCssClass("table table-bordered");
var thead = new TagBuilder("thead");
var tbody = new TagBuilder("tbody");
var headerRow = new TagBuilder("tr");
var bodyRows = new List();
var model = expression.Compile()(htmlHelper.ViewData.Model);
if (model.Any())
{
var properties = model.First().GetType().GetProperties().Where(p => p.CanRead && p.GetMethod.IsPublic);
foreach (var prop in properties)
{
var th = new TagBuilder("th");
th.InnerHtml.Append(prop.Name);
headerRow.InnerHtml.AppendHtml(th);
}
foreach (var item in model)
{
var tr = new TagBuilder("tr");
foreach (var prop in properties)
{
var td = new TagBuilder("td");
td.InnerHtml.Append(prop.GetValue(item)?.ToString());
tr.InnerHtml.AppendHtml(td);
}
bodyRows.Add(tr);
}
}
thead.InnerHtml.AppendHtml(headerRow);
tbody.InnerHtml.AppendHtml(bodyRows);
table.InnerHtml.AppendHtml(thead);
table.InnerHtml.AppendHtml(tbody);
return table;
}
}
在视图文件中使用以下代码生成表格:
@using MyProject.Extensions
@model List
@Html.TableDisplayFor(m => m)