2017-05-11 1 views
0

J'ai cette liste déroulante qui se remplit avec des valeurs de DB, mais est en quelque sorte nulle quand il arrive à la vue.MvC DropDownList avec la connexion à DB

Ceci est mon modèle

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

Et ceci est mon contrôleur

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

Et à mon avis

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

Quelqu'un peut-il s'il vous plaît me dire, ce que je fais mal et comment résoudre cela?

+0

Vous donnez à View une liste de 'ListProblem', mais il ne ressemble pas à votre modèle Tapez dans la vue (mais vous ne l'avez pas montré). Et, FWIW, ce n'est pas un modèle, vous ne devriez pas avoir votre modèle faisant toute cette logique. – Crowcoder

Répondre

0

Si vous définissez la liste à l'aide ViewData alors vous devriez utiliser:

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

Le premier paramètre SelectedProblem est utilisé lorsque vous postez récupérer vos données sur le serveur.