Asp.net Lambda函数对mvc3视图中的某些值进行颜色编码?

Asp.net Lambda函数对mvc3视图中的某些值进行颜色编码?,asp.net,asp.net-mvc-3,lambda,Asp.net,Asp.net Mvc 3,Lambda,我在razor mvc3视图中有以下代码,该视图在几个网格和表格中复制为颜色代码值: @{var val= @@item.value * 100);} @if(@val < 85) { <div style='color: #C11B17' > @val.ToString("0.0")%</div> } @if(@val >= 85 && osi <=95 ) { <

我在razor mvc3视图中有以下代码,该视图在几个网格和表格中复制为颜色代码值:

        @{var val= @@item.value * 100);}
        @if(@val < 85) { <div style='color: #C11B17' > @val.ToString("0.0")%</div> }         
        @if(@val >= 85 && osi <=95 ) { <div style='color: #AF7817' > @val.ToString("#.0")%</div> }         
        @if(@val > 95 && osi <=115) { <div style='color: green' > @val.ToString("#.0")%</div> }                  
        @if(@val > 115) { <div style='color: blue' > @val.ToString("#.0")%</div> }    
@{var val=@@item.value*100);}
@如果(@val<85){@val.ToString(“0.0”)%}
@如果(@val>=85&&OSI95&&OSI115){@val.ToString(“#.0”)%}

如何重新写入等效的lambda函数,以便在视图中重用?

您可以在非渲染块中写入此方法,并根据需要调用它:

@{
  Func<Decimal, string> helperMethod = (Decimal val) => 
  {
      var template = "<div style='color: {0}' > {1}%</div>";
      var color = ""
      var format = "#.0";
      if(val < 85) { color = "#C11B17"; format = "0.0"; }         
      else if(val >= 85 && osi <=95 ) { color = "#AF7817"; }         
      else if(val > 95 && osi <=115) { color = "green"; }                  
      else if(val > 115) { color = "blue"; }
      else return "";
      return String.Format(template, color, val.ToString(format));
  };
}

为什么需要一个lambda函数,为什么不只是一个简单的helper方法?@PinnyM:lambda可能不是正确的工具,但我想将它保留在.cshtml文件的本地。我不必添加在另一个文件中定义的帮助器。QQ实际上给了我以下错误:“无法将lambda表达式指定给隐式类型的局部变量”高亮显示var helperMethod行尝试将“var helperMethod”更改为“Func helperMethod”,如上所述
@Html.Raw(helperMethod(item.Value*100))