2017-04-04 5 views
-1

データベースからの値をビューのドロップダウンにバインドしようとしています。エンティティフレームワークを使用したMVCでのデータベースからドロップダウンへの値のバインド

ビューのドロップダウンリストにデータベース値を表示する必要があります。私は電子メールIDをデータベーステーブルからドロップダウンにバインドしようとしています。

ここで、メールIDをドロップダウンに追加する必要があります。これは私のモデルである、

public class UserDetails 
{ 
     public List<SelectListItem> Userdetails { get; set; } 
     public string Email { get; set; } 
} 

これは私のコントローラで、

public ActionResult Admin() 
{ 
      var db = new DataEntities1(); 
      var query = db.tblEmployees.Select(c => new { c.Email }); 
      ViewBag.Categories = new SelectList(query.AsEnumerable(), "CategoryID", "CategoryName"); 
      return View(); 
} 

これは、ビューがドロップダウンし、データベースからの値がロードされます

@model List<MVC_Sample.Models.UserDetails> 

      <div class="dropdown"> 
       @Html.DropDownList("CategoryID", (SelectList)ViewBag.Categories, "--Select One--") 

       </div> 

、私の見解です。しかし、残念ながら、私はドロップダウン値を追加することができません。私はどこでここで間違っていたのですか?誰もがこの上で私を助けることができます。..

+0

??:あなたはに

@Html.DropDownList("CategoryID", (SelectList)ViewBag.Categories, "--Select One--") 

を変更する必要があります –

+0

'SelectList'として渡すテキストと値フィールドとして' Email'ではなく 'CategoryID'と' CategoryName'を確認していますか?おそらくあなたは 'ViewBag.Categories = new SelectList(query.AsEnumerable()、" Email "、" Email ");'を使いたいでしょう。 –

+0

あなたのモデルをビューに戻すことさえできず、 '@model List 'はまったく意味がありません。複数のドロップダウンを作成したいですか(それぞれの 'UserDetails'に対して1つ)?そして、あなたはクエリが意味をなさない - それは1つのプロパティを返すだけで、プロパティは 'CategoryID'と' CategoryName'を含んでいません。ここで何をしようとしていますか? –

答えて

1

を他のユーザーがコメントにあなたをCOMENTとして、問題はCategoryIDCategoryNameはTHQ query

上に存在しないということであってもよく、しかし、私は普通にドロップダウンをバインドすることを好みますList<SelectListItem>をバインドする代わりに、SelectListにバインドする必要があります。これは、厳密な型付きクエリを作成しやすくするためです。

は、私には、コントローラにこれらの行を変更します

var query = db.tblEmployees.Select(c => new { c.Email }); 
ViewBag.Categories = new SelectList(query.AsEnumerable(), "CategoryID", "CategoryName"); 

へ:

List<SelectListItem> query = db.tblEmployees.Select(c => new SelectListItem { Text = c.Email, Value = c.CategoryId }).toList(); 
ViewBag.Categories = query; 

次に、ビューで。区分と区分名とは何か

@Html.DropDownList("CategoryID", (List<SelectListItem>)ViewBag.Categories, "--Select One--") 
+0

ありがとうございました。その作業細かい – Meghana

+0

OPには、 'List Userdetails'というプロパティがあり、' ViewBag'ではなく、 '@Html.DropDownListFor(m => m.CategoryID、Model.Userdetails、 ... ")' –

関連する問題