Asp.net 为什么';代码块中的Razor语法是否正确地取消引用?
我在Razor视图中有以下标记:Asp.net 为什么';代码块中的Razor语法是否正确地取消引用?,asp.net,razor,Asp.net,Razor,我在Razor视图中有以下标记: @Model.HeadingText 这非常有效,并最终呈现如下内容: @if (!string.IsNullOrEmpty(Model.HeadingName)) { <dynamic type="@Model.HeadingName"> @Model.HeadingText </dynamic> } 联系我们 但是,如果要检查null,它将无法呈现结束标记: @if(!string.IsNul
@Model.HeadingText
这非常有效,并最终呈现如下内容:
@if (!string.IsNullOrEmpty(Model.HeadingName))
{
<dynamic type="@Model.HeadingName">
@Model.HeadingText
</dynamic>
}
联系我们
但是,如果要检查null,它将无法呈现结束标记:
@if(!string.IsNullOrEmpty(Model.HeadingName))
{
@Model.HeadingText
}
出于某种原因,这将导致以下输出:
联系我们
有人知道如何取消对闭合块的引用,以便它正确地渲染吗
我尝试过但没有成功的事情
- 使用
启动该行@:
- 在结束标记中添加空格
Html.Raw()
输出文本,尽管它在视图中看起来很难看,intellisense可能会对“缺少”的结束标记犹豫不决:
@if(!string.IsNullOrEmpty(Model.HeadingName))
{
@Model.HeadingText
@Html.Raw($“”)
}
我也无法让它正确地取消引用。不幸的是,为了转换回HTML,Razor希望看到纯文本的HTML标记名。虽然可以通过这种方式向标记添加属性,但是
…为什么不定制一下,那么你的剃须刀就会变成这样:
@if (!string.IsNullOrEmpty(Model.HeadingName))
{
<dynamic type="@Model.HeadingName">
@Model.HeadingText
</dynamic>
}
然后,为了使DynamicTagHelper类可用于所有Razor视图,您需要将addTagHelper
指令添加到views/\u ViewImports.cshtml文件中:
@addTagHelper *, MyNamespace
(确保用实际名称空间替换MyNamespace
)
也许对你所做的事情来说有些过分,但至少这会激励你