![](/img/trans.png)
[英]System.ArgumentNullException: 'Value cannot be null. Parameter name: items'
[英]ArgumentNullException: Value cannot be null. (Parameter 'items')
我的代碼有問題。 我嘗試編輯產品的詳細信息並添加字段“類別”和“發布者”作為下拉列表,同時更新詳細信息,如下圖:這里
這是我在 controller 中的代碼:
[HttpGet]
public IActionResult Edit_Products(string productId)
{
ViewBag.ListofPublisher = context.Publisher.ToList();
ViewBag.ListofCategory = context.Category.ToList();
return View(context.Product.Find(productId));
}
在視圖中,我添加了兩個下拉列表來加載類別和發布者並回發到 controller
<div class="form-group">
<label>Category</label>
<br />
<select class="form-control" asp-for="CategoryCode"
asp-items="@(new SelectList(ViewBag.ListofCategory,"CategoryCode","CategoryName"))">
</select>
</div>
@*Product Category*@
<div class="form-group">
<label>Publisher</label>
<br />
<select class="form-control" asp-for="PublisherCode"
asp-items="@(new SelectList(ViewBag.ListofPublisher,"PublisherCode","PublisherName"))">
</select>
</div>
@*Product Publisher*@
在編輯 controller 中,我將其更新為表
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit_Products(Product product,string productCode)
{
if (ModelState.IsValid)
{
Product result = context.Product.SingleOrDefault(p => p.ProductCode.Equals(product.ProductCode));
try
{
string proCode = product.ProductCode;
result.ProductCode = (product.CategoryCode) + (product.PublisherCode) + (proCode.Substring(proCode.Length - 2));
result.ProductName = product.ProductName;
result.Price = product.Price;
result.Quantity = product.Quantity;
result.AuthorName = product.AuthorName;
result.ReleaseYear = product.ReleaseYear;
result.Ver = product.Ver;
result.Used = product.Used;
result.Review = product.Review;
result.CategoryCode = product.CategoryCode;
result.PublisherCode = product.PublisherCode;
result.Picture = product.Picture;
context.SaveChanges();
}
catch (Exception exx)
{
ViewBag.Msg = exx.Message;
}
return RedirectToAction("Index", "Manage_Products");
}
return View();
}
然后我得到了這個錯誤:
ArgumentNullException:值不能為 null。 (參數“項目”)
請幫我。
根據我在問題中看到的內容,我假設當您的 model 驗證失敗(即ModelState.IsValid
為false
)時,POST 請求會發生錯誤。 如果是這種情況 - 您需要再次填寫ListofPublisher
和ListofCategory
,因為您放入 ViewBag/ViewData 的數據僅在您填充它的請求的生命周期內可用( 在此處閱讀更多信息)。 即調用:
ViewBag.ListofPublisher = context.Publisher.ToList();
ViewBag.ListofCategory = context.Category.ToList();
在return View();
在您的 POST 方法中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.