ASP.NET获取详细信息的数据错误

本文关键字:数据 错误 详细信息 NET 获取 ASP | 更新日期: 2023-09-27 18:13:02

我有这个错误

传入字典的模型项的类型为'System.Data.Entity.Infrastructure.DbQuery ' 1[test . models . model]。’,但是这个字典需要一个类型为‘test . models .Suppliers’的模型项。

我的控制器

public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    var results = from c in db.Suppliers
                  where (c.ID == id)
                  select c;
    /*Suppliers suppliers = db.Suppliers.Find(id);*/
    if (results == null)
    {
        return HttpNotFound();
    }
    return View(results);
}
视图

 @model  Teste.Models.Suppliers
@{
    ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
    <h4>Suppliers</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.ID_Guard)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.ID_Guard)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Supplier)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Supplier)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Description)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Description)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Enter)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Enter)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Exit)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Exit)
        </dd>
    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
    @Html.ActionLink("Back to List", "Index")
</p>

我该如何解决这个问题?

解决

我做了一个新项目,工作得很好;)谢谢大家

ASP.NET获取详细信息的数据错误

需要返回实际的Supplier。您正在返回linq查询

所以改变

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

 Supplier supplier = results.FirstOrDefault();
 if (supplier == null)
 {
     return HttpNotFound();
 }
 return View(supplier);

调用FirstOrDefault()将运行您的查询并返回第一个匹配项或null。