2011-02-28 55 views
4

我有一些标签,我想说“如果它们当前位于该标签引用的页面上,请将其作为一个跨度,否则,请将其作为链接。”在伪利刃,应该是这样的:Razor中的条件链接

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

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

回答

4

这样的事情呢?

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

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

没有关于关闭标签的错误。

看起来也有点干净ihmo。

HTH

7

你可以写标签作为文字文本,以防止剃刀从它们解析:

@:<span> 
2

或者只是把它写出来明确:

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