1

我正在开发 MVC 应用程序并使用剃刀语法。我使用了模型优先方法。

我有两个实体,客户和潜在客户。Lead 继承自 Customer。

当 IsActive 属性为 true 时,将 Customer 视为潜在客户,否则将是客户。

请检查 edmx 文件图像。

在此处输入图像描述

当我从 model 生成 DB 时,我得到了两个表 Customer Table 和 Customer_Lead 表。

这是客户表。

在此处输入图像描述

这是 Customer_Lead 表。

在此处输入图像描述

现在的问题是当我运行主要实体的索引视图时,它会给出错误。

传入字典的模型项的类型为 PagedList.PagedList1[CRMEntities.Customer],但此字典需要 PagedList.IPagedList1[CRMEntities.Lead] 类型的模型项。

我对如何为从其他实体继承的实体编写视图以及如何在使用继承的实体时访问这两个表中的数据感到困惑。

索引视图代码如下...

@model PagedList.IPagedList<CRMEntities.Lead>


@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            Status
        </th>
        <th>
            IsQualified
        </th>
        <th>
            Name
        </th>
        <th>
            Address
        </th>
        <th>
            OfficePhone1
        </th>
        <th>
            Website
        </th>
        <th>
            Email2
        </th>
        <th>
            Email1
        </th>
        <th>
            FaxNo
        </th>
        <th>
            Remark
        </th>
        <th>
            Rating
        </th>
        <th>
            BusinessType
        </th>
        <th>
            IsActive
        </th>

    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Status)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.IsQualified)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Address)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.OfficePhone1)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Website)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email2)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email1)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.FaxNo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Remark)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Rating)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.BusinessType)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.IsActive)
        </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>
}

</table>

我在索引中有以下代码...

public ViewResult Index()
{


    var LeadList = (from c in db.Customers
                    where (c.IsActive == true)
                    orderby (c.Id)
                    select c);

   //What should I return ? 

}
4

1 回答 1

2

您的视图看起来不错,但您正试图将客户列表传递给它。尝试从上下文中获取潜在客户列表。

public ActionResult Index()
{
    ...
    var leadList = db.Customers.OfType<CRMEntities.Lead>().Where(c => c.IsActive).OrderBy(c => c.Id);

    return View(leadList);
}
于 2012-09-27T12:26:37.293 回答