分配剃刀难度值

时间:2011-03-03 09:12:23

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

我有以下一些代码正在触发错误

  

错误1无效的表达式术语'='

@{

  int Interest;

}

 <td>@if (@item.interest.HasValue)
    {

        @Interest= @item.interest.Value.ToString("F2");
    }

3 个答案:

答案 0 :(得分:5)

声明变量时,需要分配此变量:

@{
    string Interest = "";
}

然后:

@if (item.interest.HasValue)
{
    Interest = item.interest.Value.ToString("F2");
}

据说在视图中做这样的事情是一个非常糟糕的设计。我的意思是基于某些条件声明和分配变量之类的东西不是应该放在视图中的逻辑。视图用于显示数据。该逻辑应该转到您的控制器或视图模型。

答案 1 :(得分:2)

在@if块中,您可以在没有@符号的情况下处理变量。

@if (@item.interest.value) {
   @item= @item.interest.Value
}

被解释为:

@if (@item.interest.value) {
     Write(item=);
     Write(@item.interest.Value);
}

正如您所看到的,Write(item=)不是有效的C#代码。

您应该使用:

 @if (item.interest.value) {
     item = item.interest....
 }

if (@item....)语句编译的原因,@符号。这是因为您可以在@前缀标识符,以使用保留字作为标识符名称。

答案 2 :(得分:0)

试试这个:

@{

string Interest;
}

 <td>@if (@item.interest.HasValue)
    {

        Interest= @item.interest.Value.ToString("F2");
    }

顺便说一下,您尝试将字符串(ToString()的结果)分配给整数。这不起作用。