如何在Razor视图中呈现HTML预定义标记?

时间:2017-08-15 17:43:59

标签: asp.net-mvc razor

我想根据模型中设置的内容呈现HTML预定义标记(在h2到h6之间)。以下是片段。我在结束标签中遇到问题。不处理结束标记,它被视为文本,并在页面视图源中被截断。

string subArticleLevel = "h2";
if(subarticle.SubTitleLevel!=null)
{
   subArticleLevel = subarticle.SubTitleLevel;
}                
<@subArticleLevel>@subarticle.SubTitle</@subArticleLevel>

2 个答案:

答案 0 :(得分:1)

您可以将Html.Raw方法与显式代码块表示法一起使用。

@Html.Raw("<")@(subArticleLevel)@Html.Raw(">")@(subarticle.SubTitle) 
                                        @Html.Raw("</")@(subArticleLevel)@Html.Raw(">")

如果您已经在代码块中,只需使用@:前缀来表示它是html块的开头。以下应该可以正常工作。

@{
    string subArticleLevel = "h2";
    string subarticleSubTitle = "test";
    @:<@subArticleLevel>@subarticleSubTitle</@subArticleLevel>
}

答案 1 :(得分:0)

我不确定您使用的是什么版本的MVC但如果您使用的是#6,则可能只使用c#字符串插值。

@Echo Off & SetLocal EnableDelayedExpansion
Set "FileA=File1.txt"
Set "FileB=File2.txt"
<%FileB% (For /f "delims=" %%A in (%FileA%) Do (
    Set "B="&Set /P "B="
    Echo:%%A-!B!
)) >newfile.txt

我还没试过,但是如果你得到html编码,你可以试试。

 @($"<{subArticleLevel}>{subarticle.SubTitle}</{subArticleLevel}>")

如果你没有c#6,你可以试试。

@Html.Raw($"<{subArticleLevel}>{subarticle.SubTitle}</{subArticleLevel}>")