使用Razor Helper有条理地包装内容

时间:2012-05-21 14:42:12

标签: c# asp.net-mvc razor

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

我的模型类似于:

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>

2 个答案:

答案 0 :(得分:3)

我总是用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
}

答案 1 :(得分:1)

你可以在你的编辑器模板视图中使用Razor

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

}