【问题标题】:Compilation Error when incrementing on a razor View在剃刀视图上递增时出现编译错误
【发布时间】:2021-07-27 10:52:41
【问题描述】:

我正在尝试增加剃刀视图,但“计数”给了我以下错误,我添加了@using System.Linq;,但我仍然遇到同样的错误。请协助。 编译器错误信息:

CS1061:“int”不包含“Count”的定义,并且没有扩展方法“Count”接受“int”类型的第一个参数 可以找到(您是否缺少 using 指令或程序集 参考?)

for (int i = 0; i < Model.Number.Count(); i++)
{
    var item = Model.Number[i];
    @Html.DisplayFor(model => item.Number, new 
    { 
        htmlAttributes = new { @class = "form-control" } 
    })                            
}


    /// <summary>
    ///  Number
    /// </summary>
    [DisplayName("Number")]
    public int Number { get; set; }

【问题讨论】:

  • 你不能迭代一个整数。它是一个单一的值。它的值始终为 1。Count() 仅适用于集合。在事情上,你实际上可以数数。
  • 整数不能使用.Count(),只有IEnumerable支持.Count()
  • 请注意Model.Number[i] 这也会出错。正如您所提到的 (Model.Number) 是一个整数。
  • 因此,您在模型中放置了一系列数字,并且只想遍历所有数字并将它们打印为表单控件,是吗?
  • 您视图顶部的@model 指令说明了什么? @model IEnumerable&lt;int&gt;?

标签: c# arrays asp.net-core for-loop razor


【解决方案1】:

因为你的模型是这样的:

public class Model
{
    public int Number{get;set;}
}

而你想显示数字+1,你可以使用:

@{Model.Number + 1}

【讨论】:

    【解决方案2】:

    大家好,谢谢大家,我通过以下操作解决了这个问题。不需要 for 循环。

       var Number = Model.Number + 1;
       @Html.DisplayFor(model => Number, new { htmlAttributes = new { @class = "form-control" } })
    

    【讨论】:

      猜你喜欢
      • 2013-04-09
      • 2015-04-01
      • 2015-07-15
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多