我经常使用以下代码:
for (i=0; i<4; i++) {
Serial.print(myByteArray[i]);
Serial.print("."); //delimiter
}
许多模板引擎都有条件块的特殊标记,例如在Mustache中你可以编写:
<p @if(Model.Sth)
{
?:style="display: none;"
}>Some text</p>
我的Razor代码可以用更短的形式编写吗?
答案 0 :(得分:3)
在Razor中,您可以在括号内嵌入表达式以内联执行它们。如果您的条件可以使用三元运算符编写,那么您可以执行以下操作:
@(this.Model.Sth ? "style='display:none;'" : string.Empty)
诀窍是让Razor将生成的字符串正确地发回到HTML中。您可以使用HtmlHelper
来执行此操作,但它变得非常混乱,以至于长格式条件更清晰。
然而,在属性的特定情况下,Razor的一个特殊功能,如MVC4,将有所帮助。如果使用计算结果为null
的表达式指定属性,则MVC根本不会发出该属性,因此您可以这样做:
<p style="@(this.Model.Sth ? "display:none;" : null)">Some Text</p>
(请注意,null
和string.Empty
在这种情况下是不同的:如果表达式的计算结果为空字符串,Razor将发出style=""
。)