그래서 SelectList(...)
및을 사용하여 선택 상자를 채웠습니다 ViewData[...]
. 항목이 선택 상자에 표시되고 항목을 선택할 수 있습니다. 선택 상자 의 텍스트 는 범주 Name
이고 값 은 MenuCategoryID
. 그런 다음 모델 의 MenuCategoryId
속성 에 텍스트에 연결된 값을 저장합니다 . 문제는 사용자가 항목을 선택하면 값을 0으로 저장 한 다음 모델의 값을 컨트롤러의 게시 요청에 전달한다는 것입니다. 모델의 다른 모든 값은 훌륭하고 정확하며 선택 상자에서 검색된 값일뿐입니다.
이것은 내 GET 요청입니다.
public async Task<IActionResult> Create()
{
List<MenuCategoryViewModel> Categories = await _Context.MenuCategories.ToListAsync();
ViewData["Categories"] = new SelectList(Categories, "MenuCategoryId", "Name");
return View();
}
이것은 내 SelectBox입니다.
<select asp-for="MenuCategoryId" class="form-control" asp-items="ViewBag.Categories"></select>
이것은 내 MenuCategoryId
재산입니다.
[Required]
public int MenuCategoryId { get; set; }
이것은 내 POST 요청입니다.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("MenuItemId,Name,Description,MenuCategoryID")] MenuItemViewModel menuItem)
{
if (ModelState.IsValid)
{
_Context.Add(menuItem);
await _Context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(menuItem);
}
코드를 테스트했는데 Create Method에서이 코드 부분을 변경했습니다.
[Bind ( "MenuItemId, Name, Description, MenuCategoryID")
에 대한:
[Bind ( "MenuItemId, Name, Description, MenuCategoryId ")
MenuCategoryId 는 MenuItemViewModel 클래스의 속성과 같습니다.
잘 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다