我想更新我的產品實體,但每當我提交表單時,它都會拋出: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">
...
- 1 回答
- 0 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消