我得到以下结论:
类型的异常' System.InvalidOperationException'发生在System.Core.dll中但未在用户代码中处理
附加信息:序列不包含元素。
在第
行var kategoria = db.Kategorie.Include("Kursy").Where(k => k.NazwaKategorii.ToUpper() == nazwaKategori.ToUpper()).Single();
我的KursyController.cs:
using SklepInternetowy1.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace SklepInternetowy1.Controllers
{
public class KursyController : Controller
{
private KursyContext db = new KursyContext();
// GET: Kursy
public ActionResult Index()
{
return View();
}
public ActionResult Lista(string nazwaKategori)
{
var kategoria = db.Kategorie.Include("Kursy").Where(k => k.NazwaKategorii.ToUpper() == nazwaKategori.ToUpper()).Single();
var kursy = kategoria.Kursy.ToList();
return View(kursy);
//return View();
}
public ActionResult Szczegoly(string id)
{
var kurs = db.Kursy.ToList();
return View(kurs);
//return View();
}
[ChildActionOnly]
public ActionResult KetagorieMenu()
{
var kategorie = db.Kategorie.ToList();
return PartialView("_KategorieMenu", kategorie);
}
}
}
我的Lista.cs
@{
ViewBag.Title = "Lista";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div id="strona">
@Html.Action("KetagorieMenu")
<img src="../Content/Images/dommaly.png" width="5%" height="5%" />
<a href="link">
Start > ASP.NET
</a>
@Html.Partial("_KursyList")
我的_KategorieMenu.cshtml:
@model IEnumerable<SklepInternetowy1.Models.Kategoria>
@using SklepInternetowy1.Infrastructure
<tabela>
<wiersz>
@foreach (var kategoria in Model)
{
<komorka>
<a href="@Url.Action("Lista","Kursy", new { nazwaKategori = kategoria.NazwaKategorii.ToString() })"
style="background-image: url(@Url.IkonyKategoriiSciezka(kategoria.NazwaPlikuIkony)); ">
@kategoria.NazwaKategorii
</a>
</komorka>
}
</wiersz>
我的_KursyList.cshtml:
@model IEnumerable<SklepInternetowy1.Models.Kurs>
@using SklepInternetowy1.Infrastructure
<div id="zawartosc">
<tabela>
<wiersz>
@foreach (var kurs in Model)
{
<komorka>
<a class="dodajDoKoszykaLink" href="@Url.Action("DodajDoKoszyka","Koszyk",new {id = kurs.KursID})">
</a>
@if (kurs.Bestseller)
{
}
<a class="kursSzczegolyLink" href="@Url.Action("Szczegoly","Kursy",new {id =kurs.KursID})">
<img class="kurs" src="@Url.ObrazkiSciezka(kurs.NazwaPlikuObrazka)" width="66%" height="66%" />
<h1>
@kurs.TytulKursu - @kurs.AutorKursu
</h1>
</a>
</komorka>
}
</wiersz>
</tabela>
如何解决这个问题?
答案 0 :(得分:3)
在这一行:
var kategoria = db.Kategorie
.Include("Kursy")
.Where(k => k.NazwaKategorii.ToUpper() == nazwaKategori.ToUpper())
.Single();
您正在调用.Single()
,这意味着您断言结果中始终只返回一条记录。该错误告诉您结果中返回没有记录,因此对.Single()
的调用失败。
由于结果中不可能返回任何记录,而是使用.SingleOrDefault()
并检查null
的结果。像这样:
var kategoria = db.Kategorie
.Include("Kursy")
.Where(k => k.NazwaKategorii.ToUpper() == nazwaKategori.ToUpper())
.SingleOrDefault();
if (kategoria == null)
{
// no record was found.
// handle that situation in whatever way makes sense for your system.
}
如果还可以返回多个记录,那么您也需要检查它,因为.Single()
和.SingleOrDefault()
都会抛出错误多个结果(正如他们的名字所暗示的那样)。 .FirstOrDefault()
或其他.Where()
子句等内容可能有助于在这种情况下找到您想要的记录。