获取 HTML 个要由 Razor 动态输出的标题
Getting HTML headings to be dynamically output by Razor
我正在 Razor 中创建一个页面,我正在尝试根据节点的深度动态输出标题。
所以顶级节点是 h1,二级节点是 h2 等等...
我正在努力的一点是让剃刀动态输出标题。好像有一半可以用,但是结束标签不会输出。
这是剃须刀:
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@{@parts} >
输出如下HTML:
<h4 id="#1073">4.1.1 Get a baseline </h@{@parts} >
如果我删除正斜杠它会起作用,但我最终会得到 <h3><h3>
而不是 <h3></h3>
。
我也试过:
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@parts >
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@{parts} >
如果我不能让它工作,我想我将不得不求助于一个我宁愿避免的很长的 if 语句。我认为斜杠需要以某种方式转义? Thank-you.
解决了!
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name @Html.Raw("</h")@parts@Html.Raw(">")
我只需要对代码进行转义,它看起来不整洁但可以工作。
编辑:下面的评论显示了一种更好的方法。谢谢你!
最好做个帮手:
@Heading(1, (sectionString + level + item.Name), item.Id)
@Heading(2, "Sub heading")
@Heading(3, "Lesser heading", "anyId")
@helper Heading(int headingLevel, string title, string id = null)
{
@if (id != null)
{
@Html.Raw(string.Format(@"<h{0} id=""{1}""", headingLevel, Html.Encode(id)))
}
else
{
@Html.Raw(string.Format("<h{0}>", headingLevel))
}
@title
@Html.Raw(string.Format("</h{0}>", headingLevel))
}
我正在 Razor 中创建一个页面,我正在尝试根据节点的深度动态输出标题。
所以顶级节点是 h1,二级节点是 h2 等等...
我正在努力的一点是让剃刀动态输出标题。好像有一半可以用,但是结束标签不会输出。
这是剃须刀:
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@{@parts} >
输出如下HTML:
<h4 id="#1073">4.1.1 Get a baseline </h@{@parts} >
如果我删除正斜杠它会起作用,但我最终会得到 <h3><h3>
而不是 <h3></h3>
。
我也试过:
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@parts >
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name </h@{parts} >
如果我不能让它工作,我想我将不得不求助于一个我宁愿避免的很长的 if 语句。我认为斜杠需要以某种方式转义? Thank-you.
解决了!
<h@{@parts} id="#@item.Id">@sectionString@level @item.Name @Html.Raw("</h")@parts@Html.Raw(">")
我只需要对代码进行转义,它看起来不整洁但可以工作。
编辑:下面的评论显示了一种更好的方法。谢谢你!
最好做个帮手:
@Heading(1, (sectionString + level + item.Name), item.Id)
@Heading(2, "Sub heading")
@Heading(3, "Lesser heading", "anyId")
@helper Heading(int headingLevel, string title, string id = null)
{
@if (id != null)
{
@Html.Raw(string.Format(@"<h{0} id=""{1}""", headingLevel, Html.Encode(id)))
}
else
{
@Html.Raw(string.Format("<h{0}>", headingLevel))
}
@title
@Html.Raw(string.Format("</h{0}>", headingLevel))
}