如何在C# .NET Core的SelectList中显示姓氏+姓名两列值?
解决方案
要在下拉选择列表中同时显示客户的姓(surname)和名(name),你需要将这两个字段拼接成一个完整的显示文本后传递给SelectList,以下是两种常用实现方法:
方法一:通过匿名对象直接拼接
在查询客户数据时,用LINQ的Select构造包含拼接后姓名的匿名对象,再基于此创建SelectList:
public IActionResult OnGet() { // 按需调整姓和名的顺序 var customerOptions = _context.Customers.Select(c => new { c.Id, FullName = $"{c.surname} {c.name}" }); ViewData["CustomerId"] = new SelectList(customerOptions, "Id", "FullName"); return Page(); }
方法二:扩展实体类添加只读属性
如果允许修改Customer实体类,可以新增一个返回完整姓名的只读属性,后续直接复用该属性:
1. 修改Customer实体类
public class Customer { public int Id { get; set; } public string name { get; set; } public string surname { get; set; } public int age { get; set; } // 自动拼接姓和名的只读属性 public string FullName => $"{surname} {name}"; }
2. 更新后端代码
public IActionResult OnGet() { ViewData["CustomerId"] = new SelectList(_context.Customers, "Id", "FullName"); return Page(); }
关键注意点
你当前后端代码里的"LastName"和"FirstName"是错误的字段名,必须替换为表结构对应的surname和name,或上述方案中的拼接字段/属性名;前端代码无需修改,asp-items会自动渲染显示文本与对应值。
内容的提问来源于stack exchange,提问作者Fillo
相关产品推荐
相关产品推荐

