我想用tagbuilder将无限类别系统中的表打印到cshtml屏幕上。写了一些。其中有些不是写的。请帮帮我。
c#代码:
public IActionResult Index()
{
var tb = new TagBuilder("ul");
using (SqlDbContext vt = new SqlDbContext())
{
var Kategori = from i in vt.urunKategorileri
where i.urunKategorileriUstId == 0
select i;
foreach (urunKategorileri anamenu in Kategori)
{
tb.InnerHtml.AppendHtml("<li><a href='#'>" + anamenu.urunKategorileriKategoriAdi + "</a>"+ Altkategori(anamenu.urunKategorileriId) + "</li>");
}
}
return View(tb);
}
private TagBuilder Altkategori(int id)
{
TagBuilder eb = new TagBuilder("ul");
using (SqlDbContext a = new SqlDbContext())
{
var say = (from i in a.urunKategorileri
where i.urunKategorileriUstId == id
select i).Count();
if (say > 0)
{
TagBuilder ab = new TagBuilder("<ul>");
var altKat = from i in a.urunKategorileri
where i.urunKategorileriUstId == id
select i;
foreach (urunKategorileri altkategori in altKat)
{
ab.InnerHtml.AppendHtml("<li><a href='#'>" + altkategori.urunKategorileriKategoriAdi + "</a>"+ Altkategori(altkategori.urunKategorileriId)+ "</li>");
}
return ab;
}
}
return eb;
}cshtml代码:
@model TagBuilder
@{
ViewData["Title"] = "Home Page";
}
@Model截图:

控制台输出:

在控制台中,子类别通常应该列在li标记中的"Microsoft.AspNetCore.Mvc.Rendering.TagBuilder“部分中。但这不管用。
发布于 2021-09-22 06:20:34
如果要将TagBuilder.InnerHtml附加到html中,则需要将其转换为字符串:
public IActionResult Index()
{
var tb = new TagBuilder("ul");
using (SqlDbContext vt = new SqlDbContext())
{
var Kategori = from i in vt.urunKategorileri
where i.urunKategorileriUstId == 0
select i;
foreach (urunKategorileri anamenu in Kategori)
{
string html = "";
using (var writer = new System.IO.StringWriter())
{
Altkategori(anamenu.urunKategorileriId).InnerHtml.WriteTo(writer, HtmlEncoder.Default);
html = writer.ToString();
}
tb.InnerHtml.AppendHtml("<li><a href='#'>" + anamenu.urunKategorileriKategoriAdi + "</a>" + html + "</li>");
}
}
return View(tb);
}https://stackoverflow.com/questions/69241741
复制相似问题