2017-05-11 9 views
0

DBから値を取り込むこのドロップダウンがありますが、ビューに到達すると何とかnullになります。DBに接続したMvC DropDownList

これは

public class ListProblem 
    { 
     SqlConnection conn = new SqlConnection(); 
     List<ListProblem> ProblemList = new List<ListProblem>(); 
     public string Title { get; set; } 
     public int ID { get; set; } 

     ListProblem p = null; 
     public List<ListProblem> GetProblems() 
     { 
      conn.ConnectionString = "Data Source=IBWS05\\MSSQLSERVER2012;Initial Catalog=Houston;Integrated Security=True"; 
      conn.Open(); 
      using (conn) 
      { 
       SqlCommand cmd = new SqlCommand("Select Title from Problems"); 
       cmd.Connection = conn; 
       SqlDataReader rd = cmd.ExecuteReader(); 
       while (rd.Read()) 
       { 
        p = new ListProblem(); 
        p.Title = rd["Title"].ToString(); 
        ProblemList.Add(p); 

       } 

      } 
      return ProblemList; 
     } 
    } 

私のモデルであり、これは、誰かが私が間違って何をすべきか、を教えて、どのようにしてくださいすることができ

public ActionResult Index() 
      { 
       GetProblems(); 
       return View("~/Views/OurFolder.cshtml"); 
      } 
public ActionResult GetProblems() 
     { 
      ListProblem list = new ListProblem(); 
      List<ListProblem> l = new List<ListProblem>(); 
      l = list.GetProblems(); 
      ViewData["Problem"] = l; 


       return View("~/Views/OurFolder.cshtml", list); 
     } 

そして、私のビューに

@Html.DropDownListFor(model=>model.Id,new `SelectList(Model.Title,"ID","Title","Select option"))` 

私のコントローラでありますこれを解決するには?

+0

あなたは 'ListProblem'のリストを表示していますが、それはあなたのモデルタイプのようには見えません(しかしあなたはそれを示していません)。そして、FWIWは、モデルではないので、あなたはモデルがそのすべてのロジックを実行するべきではありません。 – Crowcoder

答えて

0

あなたは、あなたが使用する必要がありますViewDataを使用してリストを設定した場合:

@Html.DropDownList("SelectedProblem", 
new SelectList((IEnumerable) ViewData["Problem"], "ID", "Title")) 

サーバーにデータをポストバック時に、最初のパラメータSelectedProblemが使用されています。