2017-08-15 92 views
-1

我想通过一组数字循环并在记分卡上显示它们。如果我逐句通过代码,变量返回正确的值,我无法让它们显示。试图在C#中使用剃须刀的for循环中显示变量/ Linq

@foreach (var g in Model) 
    { 
     @Html.Raw(string.Format("<tr>")) 
      int grossScore = 0; 

      @Html.Raw(string.Format("<td>{0}</td>", g.PlayerName)) 
     for (int s = 0; s < 18; s++) 
     { 
      @Html.Raw(string.Format("<td>")); 

      int holescore = 0; 
      var bretak = @g.Scores.Take(1).Skip(s).FirstOrDefault(); 
      var werwee = @g.Scores.Where(b => b.Hole == s + 1).Select(i => i.Score).FirstOrDefault(); 
      //if (bretak.Score > 0) 
      //{ 
      // holescore = bretak.Score; 
      //} 

      holescore = werwee; 

      Html.Raw(string.Format("{0}", holescore)); 
      //@Html.ToString(holescore); 
      //Html.Raw(holescore); 
      @Html.Raw(string.Format("<td>" + @holescore + "</td>")); 
      grossScore = grossScore + holescore; 

      @Html.Raw(string.Format("</td>")); 
     } 
      @Html.Raw(string.Format("<td>{0}</td>", grossScore)) 

      @Html.Raw(string.Format("<td align=\"center\"> <button type=\"button\" class=\"btn btn-default btn-xs editBtn\" data-player-id=\"'{0}'\">Edit </button></td>", g.GameId)) 
      @Html.Raw(string.Format("<td> <button type=\"button\" class=\"btn btn-default btn-xs deleteBtn\" data-player-id=\"'{0}'\">Delete </button></td>", g.GameId)) 
     @Html.Raw("</tr>") 
    } 

玩家名称正确显示,grossscore变量可以正确计算和显示。我从循环中获得正确数量的盒子,但holecore不会显示。对不起,它可能看起来有点混乱,但我留下了一些代码来展示我尝试过的一些东西。

+0

'开始添加@ holecore'是通过'holescore = werwee;'设置的,所以确保'werwee'不是'null' – CodeNotFound

+0

它在第四洞后是空的,但是洞1-4都有有效的数据。 –

+0

如果你想显示它,那么使用' @ holescore'。 – CodeNotFound

回答

1

我想你是误会了html.Raw,它是用来串输出解码成HTML字符串,而不是,输出只需输入 所以不是这样

@Html.Raw(string.Format("<td>" + @holescore + "</td>")); 

东西只是用这个

<td> @holescore</td> 

我建议你通过this去得到一个更清晰的图片,因为我假设你不是基于上面的代码。

+0

谢谢你。你的代码也可以工作,但是我做了上面提到的同样的事情。如果我点击调试,我的网站将无法加载。它会坐在一个空白的屏幕上,直到我点击然后会出来工作。关于​​的有趣之处在于它下面有一条扭曲的线条,表示“元素'td'不能嵌套在元素'table'内部.td元素表示表格中的数据单元格。”任何想法为什么会这样做? –

+0

你应该删除html.raw,这是不必要的,我认为你错过了你的tr标签,这就是为什么你收到这条消息。仔细检查你的''标签 – Munzer

0

克里斯在看完你的代码之后,声明需要@在开始时。

Html.Raw(string.Format("{0}", holescore)); 

但低于语句应该具有显示score.Have你尝试过这种说法或其只是信息

@Html.Raw(string.Format("<td>" + @holescore + "</td>")); 

要么使用上面的语句,或在第一条语句