HTML Helper MVC5的条件

时间:2017-11-11 19:54:48

标签: asp.net-mvc

我在链接数据库中有一个DateTime变量,我想要计算共享客户端ID的链接数,其中DateTime变量中的月份是当前月份。

但是我收到了这个错误:

  

CS1061:' ICollection'不包含' BuildDate'的定义没有扩展方法' BuildDate'接受类型' ICollection'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

视图由EF6构建。

在客户端视图中循环:

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.client)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.monthlyQuota)
    </td>
                    <td>
        @Html.DisplayFor(modelItem => item.Links.Count)
    </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Links.Where(item.Links.BuildDate.Month == Datetime.Month).Count)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.TopicTF)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
        @Html.ActionLink("Details", "Details", new { id=item.ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
</tr>
}

链接模型

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace LinksDB.Models
{
public class Link
{
    public int LinkID { get; set; }
    public int IdentifierID { get; set; }

    public string Obdomain { get; set; }
    public string Obpage { get; set; }

    public int ClientID { get; set; }

    public string Anchor { get; set; }

    [Required]
    public DateTime BuildDate { get; set; }

    public virtual Identifier Identifier { get; set; }
    public virtual Client Client { get; set; }
}
}

1 个答案:

答案 0 :(得分:0)

您的LINQ表达式不正确。

你不能将DisplayFor助手与复杂的linq表达式一起使用(这里试图用谓词来获取计数)

您可以使用where条件在Count集合属性上简单地呈现Links方法调用的值。这应该有用。

<td>
     @item.Links.Count(a=>a.BuildDate.Month == DateTime.Now.Month)
</td>

假设您要显示当前月份的链接数,对于您正在迭代的项目。