无法在详细信息页面中阅读相关数据

时间:2018-04-04 17:22:04

标签: asp.net-mvc entity-framework razor

我在这里尝试了muplitple方法,但我仍然不明白如何从MVC中的join-table访问数据。

以下是我的模特:

public class Company
{
    public int ID { get; set; }
    public string CompanyName { get; set; }

    public virtual ICollection<Firm> Firm { get; set; }
}

public class Firm
    {
        public int ID { get; set; }
        public string FirmName { get; set; }

        public virtual ICollection<Company> Company { get; set; }
    }

这会创建连接表&#34; FirmCompany&#34;在我的数据库中使用&#34; Firm_ID&#34;和&#34; Company_ID&#34;。

我在此表中添加了一条记录数据&#34; 645&#34;和&#34; 330&#34;分别

在我的控制器中,我有以下代码来获取数据:

public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Company company = db.Company.FirstOrDefault(u => u.ID == id);
        var companies = company.Firm;

        if (company == null)
        {
            return HttpNotFound();
        }
        return View(companies);
    }

当我输入正确公司的详细信息视图时,我收到以下错误:

enter image description here

如果我在控制器中尝试这种方法:

if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Company company = db.Company.FirstOrDefault(u => u.ID == id);

        if (company == null)
        {
            return HttpNotFound();
        }
        return View(company);

我只是在我的观点中得到这个文字: System.Collections.Generic.HashSet`1 [KPForms.Models.Company]

关于我哪里出错的提示?

修改: 我也在视图中尝试了很多种口味。 视图中的当前代码:

    <div>
    <h4>Company</h4>
    <hr />
    <dl class="dl-horizontal">

        <dt>
            @Html.DisplayNameFor(model => model.CompanyName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CompanyName)
        </dd>
        <dd>
            @Html.DisplayFor(model => model.Firm)
        </dd>
    </dl>
</div>

在视图中也尝试了一个foreach:

    <div>
    <h4>Company</h4>
    <hr />
    <dl class="dl-horizontal">

        <dt>
            @Html.DisplayNameFor(model => model.CompanyName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CompanyName)
        </dd>
        <dd>
            @foreach (var item in Model) {
                @Html.Displayfor(item => item.Firm)
        </dd>
    </dl>
</div>

1 个答案:

答案 0 :(得分:1)

首先,很高兴看到你的View代码看起来像什么。

没有那个,我想我会为你提供一个有效的解决方案:

<强>控制器:

public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Company company = db.Company.FirstOrDefault(u => u.ID == id);

    if (company == null)
    {
        return HttpNotFound();
    }
    return View(company);
}

查看:

@model KPForms.Models.Company
<p>Company: @Model.CompanyName</p>
<p>Firms:</p>
<ul>
@foreach(var firm in Model.Firm){
    <li>@firm.FirstName</li>
}
</ul>