使用 Razor 帮助程序有条件地包装内容

本文关键字:包装 有条件 Razor 帮助程序 使用 | 更新日期: 2023-09-27 18:35:02

使用Razor,我想根据模型的布尔属性有条件地将一些内容包装在<span>元素中。我的猜测是我需要使用模板化剃刀代表,但我发现要正确处理它们很棘手。

我的模型是这样的:

public class Foo
{
    public bool IsBar { get; set; }
}

在我看来,我希望能够使用类似于以下内容的东西:

<a href="/baz">
    @Html.WrapWith(Model.IsBar, "span", @This content may be wrapped, or not)
</a>

它将呈现的位置:

<!-- Model.IsBar == True -->
<a href="/baz">
    <span>This content may be wrapped, or not</span>
</a>
<!-- Model.IsBar == False-->
<a href="/baz">
    This content may be wrapped, or not
</a>

使用 Razor 帮助程序有条件地包装内容

我总是用span包装内容,让css处理所有的表示逻辑,如果有的话

<a href="/baz">
    <span class="@(Model.IsBar ? "bar" : "")">This content may be wrapped, or not</span>
</a>

并将 css 规则应用于.bar

span.bar
{
   //some style rules
}

您可以使用 Razor 在编辑器模板视图中执行 If

@if(Model.IsBar)
{
      <span>This content may be wrapped, or not</span>
}
else
{
       This content may be wrapped, or not
}

更新

或者你可以做你的自定义帮助程序

@helper Foo(bool bar)
{
     @if(bar)
     {
      <span>This content may be wrapped, or not</span>
     }
     else
     {
       This content may be wrapped, or not
     }
}