web-dev-qa-db-ja.com

SelectListテキストの説明で2つのフィールドを組み合わせるにはどうすればよいですか?

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はエラーを返します。選択リストラベルの名前と姓を連結するにはどうすればよいですか?

ありがとう

21
Luca Romagnoli

あなたはこのようなことをすることができます:

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);
51
coderguy123

time.Anagrafica_Dipendenteに新しいプロパティを追加します。これは、2つのプロパティの連結を表します。

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);

式本体のプロパティの詳細 ここ

31
Darin Dimitrov

私はこの答えを探していました、そして私の簡単な方法はNotMapped属性を追加することです、これは私のコードです:

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

次に、コントローラーで通常の方法を使用できます。これは私のコードです。所有者はAspNetUsersに関連する外部キーです。

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