You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置SelectList,使下拉列表同时显示FirstName与LastName?

解决方法

有两种常用方式实现下拉列表显示FirstName和LastName的组合文本:

方法1:给实体类添加计算属性

如果Producer和Actor实体类可以修改,直接添加一个返回全名的计算属性,后续所有需要显示全名的地方都能复用:

// Producer类示例
public class Producer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    
    // 添加计算属性
    public string FullName => $"{FirstName} {LastName}";
}

// Actor类同理添加FullName属性

然后修改你的Create方法,把SelectList的文本字段换成FullName:

public async Task<IActionResult> Create()
{
    var movieDropdownsData = await _service.GetNewMovieDropdownsValues();            
    ViewBag.Cinemas = new SelectList(movieDropdownsData.Cinemas, "Id", "Name");
    ViewBag.Producers = new SelectList(movieDropdownsData.Producers, "Id", "FullName");
    ViewBag.Actors = new SelectList(movieDropdownsData.Actors, "Id", "FullName");
    return View();
}

方法2:使用LINQ投影生成匿名对象(无需修改实体类)

如果不想改动实体类,可以在获取数据后,通过LINQ将每个对象投影成包含Id和组合名称的匿名对象:

public async Task<IActionResult> Create()
{
    var movieDropdownsData = await _service.GetNewMovieDropdownsValues();            
    ViewBag.Cinemas = new SelectList(movieDropdownsData.Cinemas, "Id", "Name");
    
    // 处理Producers
    ViewBag.Producers = new SelectList(
        movieDropdownsData.Producers.Select(p => new {
            p.Id,
            FullName = $"{p.FirstName} {p.LastName}"
        }), 
        "Id", 
        "FullName"
    );
    
    // 处理Actors
    ViewBag.Actors = new SelectList(
        movieDropdownsData.Actors.Select(a => new {
            a.Id,
            FullName = $"{a.FirstName} {a.LastName}"
        }), 
        "Id", 
        "FullName"
    );
    
    return View();
}

两种方法对比

  • 方法1适合需要在多个地方显示全名的场景,代码复用性高,维护更方便。
  • 方法2适合临时需求,不需要修改实体类,快速实现效果。

内容的提问来源于stack exchange,提问作者Tudor G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:10:39