【问题标题】:ASP.Net MVC Razor Sum and Count functionsASP.Net MVC Razor Sum 和 Count 函数
【发布时间】:2014-01-10 14:33:39
【问题描述】:

是否可以在 Razor 中使用“Sum”,这样您就可以在视图上总结已交互的内容。 IE。我的看法是这样的:

@model IEnumerable<cb2.ViewModels.ResultsVM>
...
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Qualified)
    </td>
  ...
 }

然后我想在屏幕底部总结所有 Qualified in,类似于:

@Model.Qualified.Sum()

但我得到了错误:

'System.Collections.Generic.IEnumerable&lt;cb2.ViewModels.ResultsVM&gt;' does not contain a definition for 'Qualified'

我认为在 Qazor 中简单地对模型使用 Sum 或 Count 会很容易吗?

谢谢,马克

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    我想你想要:

    @Model.Sum(i => i.Qualified)
    

    Qualified 是模型中items 的属性,而不是模型本身。

    【讨论】:

    • 在 ASP.NET Core 1.1 中 @Model.Sum(...) 无法识别。有什么替代方案?
    • 它应该可以正常工作 - 使用重现问题的现有代码提出一个新问题。
    • 我搞定了。我在 ViewModel 中使用了一个属性,它是一个行列表,例如 myViewModel.listOfTableRows = (LINQ query).ToList()。我正在遍历该列表。所以,在那种情况下,我需要使用 @Model.listOfTableRows.Sum(c =&gt; c.ColumnName)not @Model.Sum(...)。但是您和musefans 的解决方案帮助我找到了正确的方向(谢谢)。
    【解决方案2】:

    请记住ModelIEnumerable&lt;cb2.ViewModels.ResultsVM&gt;,它不包含Qualified 的属性,但集合中的每个项目都包含。所以你可以直接在集合上调用Sum,并指定你要求和的属性,即Qualified...

    @Model.Sum(x => x.Qualified)
    

    【讨论】:

    • 我用的是ASP.NET Core 1.1,而VS2015编辑器的Intellisense 无法识别@Model.Sum(...)这个怎么解决?
    • 它现在可以工作了 - 正如我上面的 cmets 中所解释的那样。
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2022-10-20
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多