【问题标题】:How can I combine two fields in a SelectList text description?如何在 SelectList 文本描述中组合两个字段?
【发布时间】:2021-01-13 17:24:24
【问题描述】:

我想在选定的列表中添加 EF 模型人员的姓名和姓氏。 我试过这个:

public ActionResult Insert()
        {
            ViewData["accountlist"] = new SelectList(time.Anagrafica_Dipendente.ToList(), "ID_Dipendente", "Surname Name", null);             
            Giustificativi g = new Giustificativi();
            return View(g);
        }

但是 VS 会返回错误,因为没有名为“姓氏”的属性。 如何在选择列表标签中连接姓名和姓氏?

谢谢

【问题讨论】:

    标签: asp.net-mvc selectlist


    【解决方案1】:

    你可以这样做:

    ViewData["accountlist"] = 
        new SelectList((from s in time.Anagrafica_Dipendente.ToList() select new { 
            ID_Dipendente=s.ID_Dipendente,
            FullName = s.Surname + " " + s.Name}), 
            "ID_Dipendente", 
            "FullName", 
            null);
    

    【讨论】:

    • 此技术还允许组合来自不同链接对象的属性。例如FullName = s.Parent.Surname + s.Name
    【解决方案2】:

    time.Anagrafica_Dipendente 添加一个新属性,它将表示两个属性的串联:

    public string Fullname 
    {
        get 
        {
            return string.Format("{0} {1}", Surname, Name);
        }
    }
    

    然后使用这个:

    ViewData["accountlist"] = new SelectList(
        time.Anagrafica_Dipendente.ToList(), 
        "ID_Dipendente", 
        "Fullname", 
        null
    ); 
    

    更新:从 C# 6.0 开始,该属性可以更简洁地写成:

    public string Fullname => string.Format("{0} {1}", Surname, Name);
    

    详细了解表达式主体属性here

    【讨论】:

    • 为了使其工作,Fullname 必须是 time.Anagrafica_Dipendente 的成员。
    • 我不敢相信我想不到我的自己,简单而优雅,喜欢它!
    • 或者更简洁地使用public string Fullname => $"{Surname} {Name}";
    【解决方案3】:

    我一直在寻找这个答案,我的简单方法是添加一个 NotMapped 属性,这是我的代码:

    [NotMapped]
    public string FullName
       {
         get
           {
             return Name + " " + LastName;
           }
       }
    

    然后你就可以在控制器中使用正常的方式了,这是我的代码,拥有AspNetUsers相关的外键

    ViewBag.Owner = new SelectList(db.AspNetUsers, "Id", "FullName", product.Owner);
    

    【讨论】:

      【解决方案4】:

      正在观看

      <select asp-for="AccountId" 
                  asp-items='new SelectList(from x in Accounts select new { Value = x.AccountId ,Text = x.Name + " " + x.Surname}, "Value","Text")'></select>
      

      【讨论】:

        猜你喜欢
        • 2012-04-19
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        • 2018-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多