2

私はasp.net mvc4に取り組んでおり、ビューにデータを表示するためにかみそりを使用しています。ビューでforループを使用しています。ループコードは次のとおりです。

 **@for (int i = 0; i < 5; i++)
 {
    if (i<(@Html.DisplayFor(m => m.ProductInfo[5].Value)))
   {
     <img src="../../Images/star-on.png" />
   }
    else
    {
      <img src="../../Images/star-off.png" />
    }
  }**

上記の for ループの if 条件では、4 のような数値をバインドしようとしていますが、以下のようなエラーが発生します。

演算子 ' ' はタイプ 'int' および 'system.web.mvc.mvchtmlstring' のオペランドには適用できません

しかし、このかみそりのコードをビューに表示すると、数字「4」が表示されます。コードは次のようになります。

@Html.DisplayFor(m => m.ProductInfo[5].Value)

4

2 に答える 2

2

値の表示ではなく、値に対してチェックする必要があります

 @for (int i = 0; i < 5; i++)
 {
    if (i < Model.ProductInfo[5].Value)  @* <-- This line changed *@
   {
     <img src="../../Images/star-on.png" />
   }
    else
    {
      <img src="../../Images/star-off.png" />
    }
  }

アップデート

あなたModel.ProductInfo[5].Valueがタイプのstring場合、次のことを行う必要があります(Valueのタイプを変更したくない場合)

 @{
     int productFiveValue;
     bool canConvert = Int32.TryParse(Model.ProductInfo[5].Value, out productFiveValue);
 }
 @for (int i = 0; i < 5; i++)
 {
     if (canConvert && i < productFiveValue)
     {
         <img src="../../Images/star-on.png" />
     }
     else
     {
          <img src="../../Images/star-off.png" />
     }
 }
于 2013-09-19T08:53:05.430 に答える
1

ここでは HTML ヘルパーは必要ありません。通常は MvcHtmlString インスタンスを返し、それらを数値と比較することはできません。これはうまくいくはずです:

if (i < Model.ProductInfo[5].Value)
于 2013-09-19T08:53:10.477 に答える