2014-02-13 136 views
2

试图填充表数据:剃刀语法

 @foreach (var mc in Model.McList) 
     { 
      <tr> 
       <td> 
        @(@mc.Amount != null ? @mc.Amount @@ @mc.Price : null) 
       </td> 
      </tr> 
     } 

,但卡在剃刀语法错误:

期待:

预期)

或模棱两可invocation:void编写

金额是int?可空类型。

@(@mc.Amount != null ? @mc.Amount : null) //works only with one property 
@if (@mc.Amount != null) {@mc.Amount <text>@@</text> @mc.Price} //works 
@if (@mc.Amount != null) {@mc.Amount @@ @mc.Price} //error 
@if (@mc.Amount != null) {@mc.Amount @:@@ @mc.Price} //error 

检查空值的方法是否更简短?

+0

什么是具体的错误?我会说d.Price不是int(十进制) – Pedro

+0

当然,价格是十进制的。我想获得类似的输出:例如'120 @ 30.50' – Arvis

+0

HTML.Raw()在这里有帮助吗? – Matt

回答

0

我想你想使一些看起来像这样:

5 @ 20

如果是这样,你需要记住,一切)之间@(是纯C#代码;你需要做的是这样的:

@(mc.Amount != null ? string.Format("{0} @ {1}", mc.Amount, mc.Price) : "") 
+0

Tnx,用于打开我的眼睛。现在我更好了 - @剃须刀的使用情况。 – Arvis

1

我不认为这是可能的。如果您必须做,在一行中,我得到的最接近的是:

@(@mc.Amount != null ? string.Format("{0} @ {1}", mc.Amount, mc.Price) : null) 

我可能不会做我自己!

+0

所以看起来像IF运算符是唯一的选择!? – Arvis

+0

不知道,但是IF运算符有什么问题?是不是构造只是一个if/else语法糖?此外,它不像我们可以没有IF语句生活:) – Pedro

+0

对于我没有问题,IF只是寻找缩短代码:)因为我经常在C#中使用该构造。 – Arvis