2

我正在研究 asp.net mvc4,我正在使用 razor 在我的视图中显示数据。我在我的视图中使用一个 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" />
    }
  }**

在我上面的 if 条件下的 for 循环中,我试图绑定像 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 回答