Razor中的条件链接

时间:2011-02-28 16:40:02

标签: asp.net-mvc asp.net-mvc-3 razor

我有一些标签,我想说“如果它们当前位于此标签所指的页面上,请将其设为跨度。否则,请将其设为链接。”在伪剃刀中,看起来像这样:

@if(CurrentlyOnThisPage) {
  <span>
} else {
  <a>
}
   Tab Content
@if(CurrentlyOnThisPage){
  </span>
} else {
  </a>
}

Razor(正确)指出我没有关闭我的开始标记,因此无法解析此语法。如果标签内容很小,我可以使用Html.ActionLink,但我有几行内容,我想保留HTML编辑器的好处,而不是把它全部放到一个字符串中。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:8)

您可以将标记写为文字文本,以防止Razor解析它们:

@:<span>

答案 1 :(得分:4)

这样的事情怎么样?

@{
    var linkOrSpan= CurrentlyOnThisPage ? "span" : "a";
}

<@linkOrSpan><text>Tab Content</text></@linkOrSpan>

关于使用此标记关闭标记没有错误。

看起来更清洁ihmo。

HTH

答案 2 :(得分:3)

或者只是明确地写出来:

@if(CurrentlyOnThisPage)
{
  <span>tabcontent</span>
} else {
  <a>tabcontent</a>
}