从表中获取类别 ID 以在 ASP.NET Core 中的其他表上创建

问题描述 投票:0回答:1

我想将数据(一种食物及其类别)从 2 个表插入数据库。

这是我创建食物的方法,包括名称、图像。但它还有一个类别和另一个表,即食品类别,我想将新食品及其类别添加到表中,但在 get 方法中,我无法从列表中获取类别 ID。

这是我的方法:

public async Task<IActionResult> CreateFoodByAdmin(CreateFoodViewModel createFoodViewModel)
{
    if (ModelState.IsValid)
    { 
        var result = await _foodService.CreateFoodByAdmin(createFoodViewModel);

        switch (result)
        {
            case CreateFoodResult.FoodIsExist:
                await GetFoodCategory();
                ModelState.AddModelError("FoodTitle", "Food Title exists");
                return View(createFoodViewModel);

            case CreateFoodResult.NotFound:
                return RedirectToAction("NotFound");

            case CreateFoodResult.Success:
                return RedirectToAction("FoodList");
        }
    }

    await GetFoodCategory();

    return View(createFoodViewModel);
}

在视图中,我也列出了它们:

<label >Food Category Lis</label>

<ul>
    <span asp-validation-for="FoodCategoryId"></span>

    @foreach (var foodCat in foodCategory)
    {
        <li>
            <input class="form-check-input" name="FoodSelectedCategories" type="checkbox" value="@foodCat.FoodCategoryId" id="categoryCheckbox">
@foodCat.FoodCategoryTitle
        </li>
    }
</ul>

我还有一个方法来获取所有类别名称并将其传递给带有视图数据的视图:

List<FoodCategoryViewModel> foodCategory = ViewData["FoodCategory"] as List<FoodCategoryViewModel>;

在断点之后,我收到了除

FoodCategoryId
之外的所有数据。为什么?

c# database asp.net-core .net-core
1个回答
0
投票

我收到除 FoodCategoryId 之外的所有数据。为什么?

名称atrribute应与FoodCategoryId相同,然后我们可以将FoodCategoryId绑定到CreateFoodViewModel中的属性。

选项 1: 您可以尝试将以下行添加到您的 CreateFoodViewModel 中:

 public List<FoodCategoryViewModel> FoodCategoryViewModel { get;set;}

然后修改代码如下:

 <label>Food Category Lis</label>

    <ul>
        <span asp-validation-for="FoodCategoryId"></span>
        @for (var i = 0; i < foodCategory.Count; i++)
        {
            <li>
                <input class="form-check-input" name="FoodCategoryViewModel[@i].FoodCategoryId" type="checkbox" value="@foodCategory[@i].FoodCategoryId" id="categoryCheckbox">
                @foodCategory[@i].FoodCategoryTitle
            </li>
        }
        
    </ul>

结果:

enter image description here

选项2

在 CreateFoodViewModel 中添加以下代码:

public List<string> FoodSelectedCategories { get; set; }

然后修改代码如下:

 @for (var i = 0; i < foodCategory.Count; i++)
  {
      <li>
          <input class="form-check-input" name="FoodSelectedCategories[@i]" type="checkbox" value="@foodCategory[@i].FoodCategoryId" id="categoryCheckbox">
          @foodCategory[@i].FoodCategoryTitle
      </li>
  }

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.