2017-09-04 2 views
-1

J'ai une liste déroulante dans une vue. Ce que je veux, c'est que chaque utilisateur sélectionne la valeur dans Dropdownlist, le contrôleur prend la valeur sélectionnée et l'utilise comme paramètre pour la requête à la base de données.Valeur de liste déroulante Asp.Net MVC en tant que paramètre

est la vue ici:

@using (Html.BeginForm("Index", "Home")) 
{ 

    @Html.DropDownList("Dropdown", new List<SelectListItem> 
         {new SelectListItem {Text="All Assignments", Value = "All" },new SelectListItem {Text="Open Assignments", Value = "Admin"}, 
         new SelectListItem{Text="Close Assignments", Value = "Admin"}},"Select One", new { @class = "form-control", style = "width:300px; height:35px;" }) 

    <h3 style="margin-top:10px;">List of Assignment</h3> 
     <table id="myTable" class="table table-hover table-striped"> 
      //Table Content 
     </table> 


} 

Et voici le contrôleur:

public ActionResult Index(string username) 
     { 
      string val = Request.Form["Dropdown"]; 
      val = Request["Dropdown"]; 
      string nama = string.Empty; 
      if (val == null) 
      { 
       nama = "admin"; 
      } 
      else 
      { 
       nama = val; 
      } 

      if (Session["username"] != null) 
      { 

       string user = Session["username"].ToString(); 
       SqlConnection conn = new SqlConnection(connString); 
       conn.Open(); 
       string sqlQuery = @"select Animals, Gender from dbo.Animals where Pemilik = @user"; 

       //string h = x => x. 
       SqlCommand cmd = new SqlCommand(sqlQuery, conn); 
       cmd.Parameters.AddWithValue("@user", nama); 
       DataTable dt = new DataTable(); 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       da.Fill(dt); 
       conn.Close(); 
       return View(dt); 
      } 
      else 
      { 
       return RedirectToAction("Login", "Login"); 
      } 

     } 

J'ai essayé d'utiliser FormCollection pour obtenir la valeur sélectionnée dropdownlist, mais il est dit Object Reference Not Set To An Instance Of object. Donc, je décide d'utiliser Request.Form. Cependant, je ne suis toujours pas sûr que string val contient de la valeur.

+0

Comment envoyez-vous la valeur sélectionnée au contrôleur? Est-ce à travers le formulaire de soumission? ou ajax? – Shyju

+0

@Shyju: Je me réfère à cette question pour envoyer le valut dans le contrôleur. https://stackoverflow.com/questions/27901175/how-to-get-dropdownlist-selected-in-controller-in-mvc – Icon

+0

Si vous envoyez un formulaire, votre code 'chaîne val = Request.Form [" Dropdown "];' devrait fonctionner. Pourquoi pensez-vous que cela ne fonctionne pas? Avez-vous débogué votre code? Mettez les points d'arrêt et déboguez votre code. – Shyju

Répondre

0

Si vous soumettez votre formulaire à la méthode d'action, votre code string val = Request.Form["Dropdown"]; fonctionnera. Mais puisque vous voulez envoyer la valeur chaque fois que l'utilisateur change l'option, vous devez soumettre le formulaire via javascript. Vous pouvez écouter l'événement change sur l'élément SELECT et soumettre le formulaire.

Le code javascript ci-dessous fera le tit.

$(function() { 

    $("#Dropdown").change(function(e) { 
     $(this).closest("form").submit(); 
    }); 

}); 

maintenant mettre un point d'arrêt dans votre méthode d'action et contrôler la valeur de la variable val après qu'il exécute la ligne string val = Request.Form["Dropdown"];.

Vous pouvez également ajouter un paramètre dont le nom correspond au nom de votre élément SELECT à votre méthode d'action.

public ActionResult Index(string username,string Dropdown) 
{ 
    string val = Dropdown; 
    // to do : Return something 
} 
+0

Perfect !!!! Votre fonction fonctionne comme une magie. Merci – Icon