提问人:MelB 提问时间:6/14/2022 最后编辑:MelB 更新时间:7/12/2022 访问量:303
从数据库的下拉列表(非键)绑定值
Bind Value from Dropdown List (Not Key) From Database
问:
我正在尝试将下拉列表中的值从数据库绑定到另一个数据库表,而不是键。目前,它正在绑定密钥。下拉列表显示值选项。不确定如何将存储在数据库表中的值(提交表单时)从键更改为值。
例: 我正在使用 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; }
我猜这只是一个小变化,但在谷歌搜索答案时没有找到任何内容。
如果有人有任何想法,我肯定会使用帮助。这已经发布了一段时间,没有接受者。如果做不到,请告诉我。谢谢!
答:
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>
是的,这是一件非常简单的事情,但如果你不知道的话,这是一个表演障碍。
评论