2017-09-04 8 views
-1

私はビュー内にドロップダウンリストを持っています。私が望むのは、ユーザーがDropdownlist内の値を選択するたびに、コントローラは選択された値をとり、データベースへのクエリのパラメータとして使用します。ここでAsp.Net MVCドロップダウンリストの値としてパラメータ

が図である。

@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> 


} 

そして、ここでは、コントローラーです:

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

     } 

私は、ドロップダウンリスト選択した値を取得するためにFormCollectionを使用してみましたが、あるObject Reference Not Set To An Instance Of object言います。だから私はRequest.Formを使うことに決めました。しかし、まだstring valに値が入っているかわからない

+0

どのように選択した値をコントローラに送信しますか?それはフォーム提出を通じてですか?またはajax? – Shyju

+0

@Shyju:私はこの質問を参照して、値をコントローラに送ります。 https://stackoverflow.com/questions/27901175/how-to-get-dropdownlist-selectedvalue-in-controller-in-mvc – Icon

+0

フォーム提出を行う場合、あなたのコード 'string val = Request.Form [" Dropdown "];'うまくいくはずです。なぜそれは動作していないと思いますか?あなたのコードをデバッグしましたか?ブレークポイントを置き、コードをデバッグしてください。 – Shyju

答えて

0

フォームをアクションメソッドに送信すると、コードstring val = Request.Form["Dropdown"];が動作します。しかし、ユーザーがオプションを変更するたびに値を送信したいので、javascriptでフォームを送信する必要があります。 SELECT要素のchangeイベントをリッスンしてフォームを送信できます。

以下のjavascriptコードはtitを行います。

$(function() { 

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

}); 

今すぐあなたのアクションメソッドにブレークポイントを入れて、それがラインstring val = Request.Form["Dropdown"];を実行した後val変数の値を検査します。

また、SELECT要素の名前に一致するパラメータをアクションメソッドに追加することもできます。

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

Perfect !!!!あなたの機能は魔法のように機能します。ありがとう – Icon

関連する問題