>source

내 코드에 문제가 있습니다. 이 이미지와 같이 세부 정보를 업데이트하는 동안 제품 세부 정보를 편집하고 "카테고리"및 "게시자"필드를 DropdownList로 추가하려고합니다. 여기

이것은 컨트롤러의 내 코드입니다.

[HttpGet]
public IActionResult Edit_Products(string productId)
{
    ViewBag.ListofPublisher = context.Publisher.ToList();
    ViewBag.ListofCategory = context.Category.ToList();
    return View(context.Product.Find(productId));
}

보기에서 두 개의 dropdownList를 추가하여 Category 및 Publisher를로드하고 컨트롤러에 다시 게시합니다.

<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*@

편집 컨트롤러에서 이것을 테이블로 업데이트합니다.

[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: Value cannot be null. (Parameter 'items')

제발 도와주세요.

  • 답변 # 1

    질문에서 볼 때 모델이 유효성 검사에 실패하면 POST 요청에서 오류가 발생한다고 가정합니다 (즉, ModelState.IsValid 이다 false ). 이 경우-작성해야합니다. ListofPublisherListofCategory 다시 한 번, ViewBag/ViewData에 입력 한 데이터는 입력 한 요청의 수명주기 동안에 만 사용할 수 있습니다 (자세한 내용은 여기 참조). 즉, 전화 :

    ViewBag.ListofPublisher = context.Publisher.ToList();
    ViewBag.ListofCategory = context.Category.ToList();
    
    

    전에 return View(); POST 방법에서.

관련 자료

  • 이전 dart - 정수의 자릿수를 반복하는 방법?
  • 다음 github - Docker 파일을 소스 코드와 함께 공유 할 수 있다면 Docker 이미지를 공유해야합니까?