2016-09-22 6 views
0

DropDown、TextBox、およびButtonがあります。DropDownにはColumnNames(Name、Cpr)が含まれていて、フィルタされたデータを表示するにはdropDownから値を選択し、文字列を入力してButtonをクリックします。これを行うために、私は次のコードを書いたが、DropDown Selected Valueを得ることができなかった。 次は私のコントローラのビューで ドロップダウンリストを使用して選択した値をデータにフィルタリングする

public ActionResult Index(string searchType,FormCollection frm) 
     { 
      List<SelectListItem> obj = new List<SelectListItem>(); 
      obj.Add(new SelectListItem { Text = "Agent Name", Value = "Name", Selected = true }); 
      obj.Add(new SelectListItem {Text = "CPR Number", Value = "Cpr"}); 
      ViewBag.cmb = obj; 


      var agents = from s in db.Agents 
       select s; 

      if (searchType != null) 
      { 
       ViewBag.searchString = searchType; 
       string cmbColumnSelection = frm["cmb"]; 

       switch (cmbColumnSelection) 
       { 
        case "Name": // Table=Agent,Column=Name 

         agents = agents.Where(s => s.Name.ToString().Contains(searchType)); 
         break; 
        default: 
         agents = agents.Where(s => s.Cpr.ToString().Contains(searchType)); 
         break; 
       } 
      } 

      return View(agents.ToList()); 
     } ` 

です:

@using (Html.BeginForm("Index", "Agent", FormMethod.Get)) 
    { 
     <p> 
      @Html.TextBox("searchType", ViewBag.searchString as string) 
      Select Filter : @Html.DropDownList("cmb") 
      <input type="submit" value="Submit" class="btn btn-primary" /> 
     </p> 
    } 
+0

だけアクションのパラメータを宣言し、フォームのコレクションを使用しないでください: 'インデックス(文字列て、searchType、文字列のCMB)' – Andrei

+0

そして、どのようにすることができますがここでDropDownListを選択して値を取得しますか? 'string cmbColumnSelection = frm [" cmb "];' – tahirraza

+0

入力にあります! 'String cmb'には、必要な値が含まれていなければなりません – Andrei

答えて

0

は、アクションの入力パラメータとフォームのコレクションを混在させないでください。それだけです

public ActionResult Index(string searchType, String cmb) 

cmbをドロップダウンからポスト値が含まれます:あなたはcmbと同じに固執し、完全にフォームのコレクションをドロップし、searchTypeで良いスタートを持っています。ちょうど今、それを使用します。

string cmbColumnSelection = cmb; 

あるいは

switch (cmb) 
{... 
+0

Thanx mate.Problem solve – tahirraza

関連する問題