如何在某些HTML中使用内联Razor代码?

时间:2011-09-23 10:39:49

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

我想做什么:

<div class='duck@if (this.Model.quacker) { -noisy }'>quack</div>

即。任

<div class='duck'>quack</div>

<div class='duck-noisy'>quack</div>

然而,我无法正确理解语法。我尝试@:-noisy,但会产生错误,例如

  

确保所有“{”字符都有匹配的“}”字符   在这个块内

我也试过@: - 吵闹@但同样的错误。我该怎么办?

3 个答案:

答案 0 :(得分:5)

&lt; text&gt;元素将再次转换为HTML。像这样:

<div class='duck@if (this.Model.quacker) { <text>-noisy</text> }'>quack</div>

答案 1 :(得分:1)

按如下方式执行此操作:

@{
    var poo = string.Format("{0}{1}", "duck", (this.Model.quacker) ? "-noisy" : "");
}

<div class='@poo'>quack</div>

<强>更新

以下是产生最佳解决方案:

<div class='@("duck")@if(this.Model.quacker){<text>-noisy</text>}'>quack</div>

答案 2 :(得分:1)

应该是这样的

<div @if(this.Model.quacker) 
{
@:class='duck-noisy' 
}else{
@:class='duck'
}>quack</div>