我很困惑如何修复此问题。
我想如果显示"没有客户发现" custid 的值 = 0
@if (Model.Customer == null)
{
<p>no customer found</p>
}
else
{
<p> @Model.Customer.CustomerName </p>
}
控制器︰
public ActionResult Index(int custID = 0)
{
var customer = (from c in db.Customers
where c.Id == (custID == 0 ? c.Id : custID)
select c).FirstOrDefault(); // .SingleOrDefault();
routes.MapRoute(
null,
"AAA/Index/{custID}",
new { controller = "AAA", action = "Index" }, new { custID = @"\d+" });
去到 URL"/ AAA/索引/0"给出了记录编号 ID = 1在表中,并没有记录的 ID 为 0 不为 null。
我用 SingleOrDefault 和它的错误︰
序列包含多个元素
怎么 FirstOrDefault()
,没有给我默认为空值时的记录 ' custid 的值 = 0' 不应该被发现吗?
当 custID == 0
你的状况看起来像这样︰
where c.Id == c.Id
这显然是对任何记录。 SingleOrDefault
将失败,因为有一个以上, FirstOrDefault
返回第一个。
可能你只是想要︰
where c.Id == custID
或如果你的数据库包含记录 Id
等于 0,但是你不想返回它︰
where custID != 0 && c.Id == custID