显示视图时出错

时间:2016-07-07 18:49:26

标签: c# asp.net-mvc

编译程序时出现此错误:

  

'了System.Collections.Generic.ICollection'才不是   包含' WIE_Ilosc'的定义没有扩展方法   ' WIE_Ilosc'接受第一个类型的参数   '了System.Collections.Generic.ICollection'可能   发现(您是否缺少using指令或程序集引用?)

我的代码必须更改哪些内容才能使其正常工作?

我的观点:

@model List<Webb.Models.Faktury>
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <h2>Faktura VAT</h2>
    <p>
        Oryginal</p>
    <table width="100%">
        <tr>
            <td>ID</td>
            <td>Data S.</td>
            <td>Numer</td>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.FAK_Id</td>
                <td>@item.FAK_DataS</td>
                <td>@item.Firma.FIR_Rachunek</td>
                <td>@item.Wierszes.WIE_Ilosc</td>
            </tr>
        }
    </table>

</body>
</html>

我的控制员:

public ActionResult Reports(int? id)
        {
            // Setup sample model
            var pro = (from a in db.Fakturies
                       join b in db.Wierszes on a.FAK_Id equals b.WIE_Fkid
                       join c in db.Produkties on b.WIE_Pid equals c.PRO_Id
                       select a);

            pro = pro.Where(a => a.FAK_Id == id);

            if (Request.QueryString["format"] == "pdf")
                return new PdfResult(pro.ToList(), "Reports");

            return View(pro);
        }

模特的一部分:

public Faktury()
        {
            this.Wierszes = new HashSet<Wiersze>();
        }
     .
     .
     .
     .

        public virtual ICollection<Wiersze> Wierszes { get; set; }
        public virtual Firma Firma { get; set; }
        public virtual Klienci Klienci { get; set; }
        public virtual Statusy Statusy { get; set; }
    }

1 个答案:

答案 0 :(得分:3)

在你的剃刀代码中查看这一行。

<td>@item.Wierszes.WIE_Ilosc</td>

但是根据您的类定义,Wierszes类上的Faktury属性是集合类型(ICollection<Wiersze>)。在您的视图中,您尝试访问集合上的WIE_Ilosc属性!

如果你想要显示所有的Wiersze,你应该再次遍历它们并渲染它。

@foreach (var item in Model)
{
   <tr>
       <td>@item.FAK_Id</td>
       <td>@item.FAK_DataS</td>
       <td>
            @if(item.Wierszes!=null)
            {
               foreach(var v in item.Wierszes)
               {
                   <span>@v.WIE_Ilosc</span>
               }
            }
        </td>
    </tr>
}