Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC根据下拉列表中选择的选项筛选数据_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC根据下拉列表中选择的选项筛选数据

C# ASP.NET MVC根据下拉列表中选择的选项筛选数据,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我是MVC的新手,如果问题很简单,请原谅 我正在尝试构建一个项目,让用户能够使用下拉列表选择要搜索的字段(LastName、FirstName、Department和Location)。用户可以在文本框中键入搜索词并单击搜索按钮。(根据下拉列表中选择的选项筛选数据,然后输入与下拉列表中选择的选项匹配的内容) 问题是:我只能在字段中搜索,文本框无法读取下拉列表中的值 我的模型是: public class Employee { public int EmployeeId {

我是MVC的新手,如果问题很简单,请原谅

我正在尝试构建一个项目,让用户能够使用下拉列表选择要搜索的字段(LastName、FirstName、Department和Location)。用户可以在文本框中键入搜索词并单击搜索按钮。(根据下拉列表中选择的选项筛选数据,然后输入与下拉列表中选择的选项匹配的内容)

问题是:我只能在字段中搜索,文本框无法读取下拉列表中的值

我的模型是:

public class Employee
    {
        public int EmployeeId { get; set; }

        [Required]
        [StringLength(50, MinimumLength = 1)]
        public string LastName { get; set; }

        [Required]
        [StringLength(50)]
        public string FirstName { get; set; }

        [Required]
        public string Department { get; set; }

        [StringLength(50)]
        public string Location { get; set; }
    }
我的控制器是:

public ActionResult Index(string sortOrder, string searchString)
        {
            ViewBag.EmployeeList = new List<SelectListItem>
            {
                new SelectListItem{Selected=true, Text="LastName", Value="LastName" },
                new SelectListItem{Selected=true, Text="FirstName", Value="FirstName" },
                new SelectListItem{Selected=true, Text="Department", Value="Department" },
                new SelectListItem{Selected=true, Text="Location", Value="Location" },
            };

            var employee = from e in db.Employee
                           select e;

            if (!String.IsNullOrEmpty(searchString))
            {
                employee = employee.Where(s => s.FirstName.Contains(searchString));
            }
            return View(employee);
        }
公共操作结果索引(字符串排序器、字符串搜索字符串) { ViewBag.EmployeeList=新列表 { 新建SelectListItem{Selected=true,Text=“LastName”,Value=“LastName”}, 新建SelectListItem{Selected=true,Text=“FirstName”,Value=“FirstName”}, 新建SelectListItem{Selected=true,Text=“Department”,Value=“Department”}, 新建SelectListItem{Selected=true,Text=“Location”,Value=“Location”}, }; var employee=来自数据库employee中的e 选择e; 如果(!String.IsNullOrEmpty(searchString)) { employee=employee.Where(s=>s.FirstName.Contains(searchString)); } 返回视图(员工); } 我的观点是:

<p>
        All: @Html.DropDownList( "EmployeeList");
        Search By: @Html.TextBox("searchString")<br />
        <input type="submit" value="Search">
    </p>

全部:@Html.DropDownList(“员工列表”);
搜索人:@Html.TextBox(“搜索字符串”)


我不知道如何使用下拉列表选择相应字段并让搜索框搜索。例如,如果我选择“Location”,我可以在文本框中输入一些关于“Location”的关键字进行搜索,但仅限于Location,而不是FirstName或其他

这是从视图中传递selectOption和searchtext的控制器

  public ActionResult Index(string SelectOption, string SearchText)
    {

        var model = from s in db.Employee
                    select s;

        if (!String.IsNullOrEmpty(SearchText) )
        {
            switch (SelectOption)
            {
                case "Email":
                    model = model.Where(a => 
a.Email.ToLower().Contains(SearchText.ToLower()));
                    break;

                case "Forname":
                    model = model.Where(a => 
a.Forename.ToLower().Contains(SearchText.ToLower()));
                    break;

                case "Surname":
                    model = model.Where(a => 
a.Surname.ToLower().Contains(SearchText.ToLower()));
                    break;

            }
        }
       



        return View(model.ToList());
    }
至于视图,您确实需要在dropdownlist中始终使用viewbag。有时纯纯html可以做得更好

@model IEnumerable<Incendo.Entities.Employee>

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm())
{

<label for="selectoption">Select Option:</label>
<select id="SelectOption" name="SelectOption">
    <option value="Email">Email</option>
    <option value="Surname">Surname</option>
    <option value="Forename">Forename</option>
</select>

<br />

@Html.Label("Search Text")
@Html.TextBox("SearchText") 
<input type="submit" value="Search" />
}


<table class="table table-responsive">
@foreach (var item in Model)
{
    <tr>
        <td>@item.Forename </td>
        <td>@item.Surname </td>
        <td>@item.Email  </td>
    </tr>
}
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数
@使用(Html.BeginForm())
{
选择选项:
电子邮件
姓
名字

@Html.Label(“搜索文本”) @Html.TextBox(“搜索文本”) } @foreach(模型中的var项目) { @项目名称 @项目.姓氏 @邮件 }

最后,请记住将模型引用更改为您自己的名称空间

Hi@Wen。又是我。你是指如果你想有一个下拉列表,用户可以选择选择标准和搜索文本的其他文本框吗?嗨@YatFeiLeong,很高兴再次见到你。是的,我需要创建一个下拉列表,用户可以在其中选择条件(LastName、FirstName、Department和Location),然后在另一个文本框中输入文本并进行搜索。非常感谢!那真的很有帮助!