从数据库的下拉列表(非键)绑定值

Bind Value from Dropdown List (Not Key) From Database

提问人:MelB 提问时间:6/14/2022 最后编辑:MelB 更新时间:7/12/2022 访问量:303

问:

我正在尝试将下拉列表中的值从数据库绑定到另一个数据库表,而不是键。目前,它正在绑定密钥。下拉列表显示值选项。不确定如何将存储在数据库表中的值(提交表单时)从键更改为值。

例: 我正在使用 dbo。ResCategory 获取值以填充我的下拉列表。dbo。ResCategory 包含以下值:

钥匙 描述
1 辅助生活
2 独立生活
3 独立/辅助生活

现在,当我提交包含此下拉列表的表单时,即使我选择“辅助生活”,表中存储的值也是“1”而不是“辅助生活”。

下面是我的窗体 Create.cshtml 中的选择代码:

<select asp-for="InfoSite.ResType" id="Select1" class="form-select" asp-items="@(new SelectList(Model.DisplayResCatData,"ID", "Description"))"><option value="" selected disabled>---Select Residence Type---</option></select>

这是我来自 Create.cshtml.cs 的代码:

public IEnumerable<ResCategory> DisplayResCatData { get; set; }

public async Task OnGet()
{
    DisplayResCatData = await _db.ResCategory.ToListAsync();
}

public async Task<IActionResult> OnPost()
{
    await _db.InfoSite.AddAsync(InfoSite);
    await _db.SaveChangesAsync();
    TempData["success"] = "Site Information added successfully.";
    return RedirectToPage("Index");
}

}

从我的 InfoSite.cs 模型:

 public class InfoSite
{
    [Key]
    public int ID { get; set; }
    [Required]
    public string Name { get; set; }
    [Display(Name = "Office Type")]
    public string? Specialty { get; set; }
    [Display(Name = "Res Type")]
    public string? ResType { get; set; }
    [Display(Name = "Res Sub Type")]
    public string? ResSubType { get; set; }

我猜这只是一个小变化,但在谷歌搜索答案时没有找到任何内容。

如果有人有任何想法,我肯定会使用帮助。这已经发布了一段时间,没有接受者。如果做不到,请告诉我。谢谢!

数据绑定 下拉菜单 razor-pages 键值

评论


答:

0赞 MelB 7/12/2022 #1

新知识。我不知道 SelectList 构造函数中的值做了什么。最后,找到了一个解释差异的网站。

语法:

public SelectList (System.Collections.IEnumerable items, string dataValueField, string dataTextField);
  • dataValueField = 将在数据库中绑定的值
  • dataTextField = 将显示在下拉列表中的值。

因此:

<select asp-for="InfoSite.ResType" id="Select1" class="form-select" asp-items="@(new SelectList(Model.DisplayResCatData,"ID", "Description"))"><option value="" selected disabled>---Select Residence Type---</option></select>

应该是:

<select asp-for="InfoSite.ResType" id="Select1" class="form-select" asp-items="@(new SelectList(Model.DisplayResCatData,"Description", "Description"))"><option value="" selected disabled>---Select Residence Type---</option></select>

是的,这是一件非常简单的事情,但如果你不知道的话,这是一个表演障碍。