如何使用下拉列表选择值来过滤数据

本文关键字:过滤 数据 选择 何使用 下拉列表 | 更新日期: 2023-09-27 18:08:14

我有一个下拉菜单,一个文本框和一个按钮,下拉菜单包含ColumnNames (Name,Cpr),以查看过滤的数据用户从下拉菜单中选择一个值,输入字符串并单击按钮。为此,我编写了以下代码,但无法获得下拉选择值,除了这个问题代码工作完美。请告诉我我哪里做错了。以下是我的控制器

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

如何使用下拉列表选择值来过滤数据

不要把动作输入参数和表单收集混在一起。你有一个良好的开端与searchType,坚持与cmb相同,并放弃形式收集:

public ActionResult Index(string searchType, String cmb)

就是这样,cmb将包含从下拉发布的值。现在就用吧:

string cmbColumnSelection = cmb;

或者

switch (cmb)
{...