在 Razor 中分配值的难度

5
我有以下一段代码,出现了错误:

错误1 无效的表达式项 '='

请注意,保留了HTML标签。
@{

  int Interest;

}

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

        @Interest= @item.interest.Value.ToString("F2");
    }
3个回答

6

在声明变量时,需要对该变量进行赋值:

@{
    string Interest = "";
}

然后:

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

话虽如此,在视图中这样做是一种非常糟糕的设计。我的意思是像根据某些条件声明和赋值变量这样的事情不是应该放在视图中的逻辑。视图的作用是显示数据。这个逻辑应该放在你的控制器或视图模型中。


3

在@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....)语句之所以能够编译通过,是因为你可以在标识符前面加上@符号,以使用保留字作为标识符名称。

0

试试这个:

@{

string Interest;
}

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接