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> }    

ビュー内で再利用できるように、同等のラムダ関数に書き直すにはどうすればよいですか?

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 に答える