asp.net 如何从“创建”页面中选择下拉项目以显示在“索引”页面中(列出所有记录)

mspsb9vt  于 2023-04-22  发布在  .NET
关注(0)|答案(1)|浏览(97)

在创建页面上,我有一个下拉列表。它会将正确的数字保存到数据库中。当我回到“索引”页面时,它会列出我所有的记录,我想只看到选择的名称。我怎么做?

public class myCrops
    {
        public static List<Crops> GetAll()
        {
            return new List<Crops>
            {
                new Crops() { Id = 1, Name = "Apples"},
                new Crops() { Id = 2, Name = "Bananas"},
                new Crops() { Id = 3, Name = "Grapes"},
                new Crops() { Id = 4, Name = "Orange"},
            };
        }
    }

在索引页面上,它显示了选择的正确数字,但我希望名称如下:即Bob选择了“葡萄”而不是显示数字“3”。TIA

"ID"  "Name"  "Age"   "Crop"
      42    Bob     23      Grapes
      43    Sue     45      Apples
unhi4e5o

unhi4e5o1#

在创建页面上,我有一个下拉列表。它会将正确的数字保存到数据库中。当我回到“索引”页面时,它会列出我所有的记录,我想只看到选择的名称。我怎么做?
实际上,你需要一个viewModel,你可以将CropName定义为字符串,并从数据库中获取详细信息,或者从CorpId中获取它们的当前位置,并通过ID将它们绑定到ViewModel中,并从静态列表中获取名称。
最后,返回viewModel,它将在Index页面中显示CorpsName。
数据结构:
让我们看一下实际操作,假设您的数据具有以下结构,

视图模型:

public class FarmerViewModel
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public int Age { get; set; }
        public string? CorpsName { get; set; }
    }

索引页操作:

public IActionResult CorpsIndex()
        {
            var list = _context.Corps.ToList();

            var listOfFarmers = new List<FarmerViewModel>();

            foreach (var item in list)
            {
                var model = new FarmerViewModel();
                model.Id = item.Id;
                model.Name = item.Name;
                model.Age = item.Age;
                model.CorpsName = myCrops.GetAll().FirstOrDefault(selectedCorps => selectedCorps.Id == item.CorpsId).Name;
                listOfFarmers.Add(model);
            }

            return View(listOfFarmers);

        }

浏览次数:

@model IEnumerable<YourProjectName.Models.FarmerViewModel>

<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Id)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Age)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.CorpsName)
            </th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Id)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Age)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.CorpsName)
                </td>
            </tr>
        }
    </tbody>
</table>

输出:

**注意:**另外,如果您所在的军团在该场景中与其他表有关系,可以使用实体框架关系键Include从其他表中加载相关数据,详情和示例请点击这里。

相关问题