0

我在一个 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> }    

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

4

1 回答 1

2

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

@{
  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));
  };
}

现在您可以在该模板中的任何位置调用该方法:

@Html.Raw(helperMethod(item.Value*100))
于 2012-05-22T02:34:00.590 回答