我試圖根據參數獲取產品列表。從產品說明列表(Index.chtml)中,當我點擊產品說明時,我想轉到僅列出具有該產品說明的產品的頁面。System.InvalidOperationException:序列不包含任何元素[MVC]
例如:如果我在Index.chtml頁面上單擊「Barstools」,我只想瀏覽Browse.chtml頁面上的barstools。
但我不斷獲取此錯誤:
Exception Details: System.InvalidOperationException: Sequence contains no elements
Source Error:
Line 25: {
Line 26: //
Line 27: var productModel = productDB.ProductDess.Include("Products")
Line 28: .Single(p => p.productDesName == productD);
Line 29: return View(productModel);
這是我有:
模型:::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::
Product.cs
個
[Table("Product")]
[Bind(Exclude = "productID")]
public class Product
{
[ScaffoldColumn(false)]
[Key]
public string productID { get; set; }
public string productName { get; set; }
public string productDim { get; set; }
public string productWoodSp{ get; set; }
public string productFabric { get; set; }
public string productTop { get; set; }
public string productFinish { get; set; }
public string productAddInfo { get; set; }
public string productImgURL { get; set; }
public string productType { get; set; }
public string collectionID { get; set; }
public virtual Collection collection { get; set; }
public string productDesID { get; set; }
public virtual ProductDes ProductDes { get; set; }
}
ProductDes.cs
[Table("ProductDes")]
public class ProductDes
{
[Key]
public string productDesID { get; set; }
public string productDesName { get; set; }
public List<Product> Products { get; set; }
}
ProductEntities.cs
public class ProductEntities : DbContext
{
public DbSet<Collection> Collections { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<ProductDes> ProductDess { get; set; }
}
控制器::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::
using System.Web.Mvc;
using StoreWeb.Models;
using System.Data.Entity;
namespace StoreWeb.Controllers
{
public class SampleController : Controller
{
ProductEntities productDB = new ProductEntities();
public ActionResult Index()
{
var productDes = productDB.ProductDess.ToList();
return View(productDes);
}
//
public ActionResult Browse(string productD)
{
//
var productModel = productDB.ProductDess.Include("Products")
.Single(p => p.productDesName == productD);
return View(productModel);
}
}
}
VIEWS ::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::
@model StoreWeb.Models.ProductDes
@{
ViewBag.Title = "Browse" + Model.productDesName;
}
<h2>Browse</h2>
@foreach (var product in Model.Products)
{
<p />
<a href="@Url.Action("Details", new { id = product.productID })">
<img src="@product.productImgURL" alt="@product.productName" />
@product.productID @product.productName
</a>
}
可有人請諮詢我該怎麼辦?謝謝!
問題EF無法檢索具有'productD'值的實體作爲'productDesName'。如果數據庫中不存在記錄,則使用「SingleOrDefault」而不是「Single」。 – Eranga
我嘗試過獲得所有產品(不管他們的產品說明) - 它工作 - 它列出了數據庫中的所有產品。但是,當我試圖只得到某些產品描述的產品,例如「Barstool」時,它給了我那個錯誤.....我已經嘗試使用「SingleOrDefault」,正如你所建議的那樣,它給了我這個錯誤,而不是::: System.NullReferenceException:對象引用沒有設置爲對象的一個實例。 :::還有什麼我可以嘗試/修復? – jannn