簡體   English   中英

讓Razor動態輸出HTML標題

[英]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語句,而我寧願避免。 我認為斜線需要以某種方式轉義? 謝謝。

解決了!

<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))
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM