对于剃须刀中的循环问题



我正在研究 asp.net mvc4,我正在使用剃刀在我的视图中显示数据。我在 view.my 循环代码中使用了一个 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 循环中,如果条件我试图绑定数字,例如 4.但它给出了如下错误

运算符 '' 不能应用于类型为 'int' 和 'system.web.mvc.mvchtmlstring' 的操作数

但是当我在我的视图中显示这个剃须刀代码时,就像它显示数字"4"一样。代码如下所示。

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

您需要检查值而不是值的显示

 @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" />
     }
 }

这里不需要HTML帮助程序,它们通常返回MvcHtmlString实例,你不能将它们与数字进行比较。这应该有效:

if (i < Model.ProductInfo[5].Value)

最新更新