Freeman에 의해 "ASP.NET MVC5"라는 책을 읽었으며 내 사이트에 관리 페이지를 추가하려고합니다. 내가 페이지 http://localhost:63843/Admin/Edit에 갈 때 지금, 나는이 오류가 : 매개 변수의"System.Int32"에 대한 NULL 값
사전 매개 변수 "productId에"유형 "선택 System.Int32"에 대한 NULL 값을 가진 항목이 포함되어, NULL 값을 허용하지 않는, "SportsStore.WebUI.Controllers.AdminController"의 "System.Web.Mvc.ViewResult Edit (Int32)"에 대한 메서드입니다. 선택적 매개 변수는 참조 유형, 유형이어야하며 값이 NULL이거나 옵션으로 선언되어야합니다. 매개 변수 이름 : 매개 변수 여기
public class AdminController : Controller
{
private IProductRepository repository;
public AdminController(IProductRepository repo) {
repository = repo;
}
public ViewResult Edit(int productId) {
Product product = repository.Products
.FirstOrDefault(p => p.ProductID == productId);
return View(product);
}
}
그러나이 편집에 대한 모든 참조하고 더 어떤 NULL 값이 없습니다 : 나는 그것을 언급 할 때
Product p1 = target.Edit(1).ViewData.Model as Product;
Product p2 = target.Edit(2).ViewData.Model as Product;
Product p3 = target.Edit(3).ViewData.Model as Product;
Product result = (Product)target.Edit(4).ViewData.Model;
는, 아무것도 변경되지는. 내가 알 수 없는데, 여기서 NULL 값입니다.
'편집'을 누르면 적절한 'productId'가 전송되지 않습니다. 'int productId'를'int? '로 수정하십시오. productId'를 호출 한 다음 매개 변수가 실제로 null인지 확인하십시오. 계속하기 전에 당신이'null'을 처리하게하거나 왜 유효한 ID를'Edit'에 전달하지 않는지를 알아낼 것입니다. – Greg
'ProductID'를'int? '로 정의하여 nullable로 만들 수 있습니다.이 경우 할당이 가능합니다. – aevitas
아니요 @aevitas는 필수 매개 변수이며, 리소스를 편집하기 위해 nullable로 설정하지 마십시오. 나쁜 디자인을 제안하지 마라. – Phill