来自SelectBox中选定项的Asp.net核心值是0

因此,我设法使用SelectList(...)ViewData[...]来填充选择框。这些项目显示在选择框中,我可以选择一个项目。选择框的文本是类别Name,而 Value 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);
}
ccczzzxxx 回答:来自SelectBox中选定项的Asp.net核心值是0

我测试了您的代码,我在创建方法中更改了这部分代码:

[绑定(“ MenuItemId,名称,说明,MenuCategoryID”)

针对:

[绑定(“ MenuItemId,名称,描述, MenuCategoryId ”)

MenuCategoryId 等于MenuItemViewModel类中的属性。

它工作正常。

本文链接:https://www.f2er.com/3163154.html

大家都在问