为了账号安全,请及时绑定邮箱和手机立即绑定

更新实体时序列不包含任何元素

更新实体时序列不包含任何元素

C#
SMILET 2022-11-21 16:51:57
我想更新我的产品实体,但每当我提交表单时,它都会抛出:System.InvalidOperationException:“序列不包含任何元素”这是我的观点:@model myadminpanel.Models.product@using (Html.BeginForm()){    <div class="container">        <div class="form-group">            <label>ProductName</label>            @Html.TextBoxFor(x => x.ProductName, new { @class = "form-control" });        </div>        <div class="form-group">            <label>ProductDescription</label>            @Html.TextBoxFor(x => x.ProductDescription, new { @class = "form-control" });        </div>        <div class="form-group">                    <label>Price</label>            @Html.TextBoxFor(x => x.Price, new { @class = "form-control" });        </div>        <div class="form-group">            <label>Quantity</label>            @Html.TextBoxFor(x => x.Quantity, new { @class = "form-control" });        <div class="button">                    <button>Submit</button>                </div>            </div>}我的控制器编辑代码是这样的:public ActionResult ProductEdit(int id){    var item = db.products.Where(x => x.ProductID == id).First();    return View(item);}[HttpPost]public ActionResult ProductEdit(product model){    var item = db.products.Where(x => x.ProductID == model.ProductID).First();    item.ProductName= model.ProductName;    item.ProductDescription = model.ProductDescription;    item.Price = model.Price;    item.Quantity = model.Quantity;    db.SaveChanges();    return View();}这是我的产品模型:namespace myadminpanel.Models{    using System;    using System.Collections.Generic;    public partial class product    {        public int ProductID { get; set; }        public string ProductName { get; set; }        public string ProductDescription { get; set; }        public Nullable<decimal> Price { get; set; }        public Nullable<int> Quantity { get; set; }        public string CategoryName { get; set; }        public Nullable<int> CategoryID { get; set; }        public virtual category category { get; set; }    }}
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

您的表单不包含您正在修改的实体的 ID,所以这个


var item = db.products.Where(x => x.ProductID == id).First();

运行为


var item = db.products.Where(x => x.ProductID == 0).First();

并且没有任何 ID = 0 的产品,因此First无法找到第一个匹配项(因为没有任何匹配项)。


因此,将 ID 添加为隐藏字段:


@using (Html.BeginForm())

{

     @Html.HiddenFor(model => model.ProductID)


    <div class="container">  

    ...


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号