C# 如何使用dropdownList进行搜索是ASP.NET核心MVC

C# 如何使用dropdownList进行搜索是ASP.NET核心MVC,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我有一个表,我试图在其中搜索,它是为所有工作,除了一个已经添加使用dropdownList 在数据库中,它们被保存为tinyint,所以当我按数字搜索时,它可以工作,但我想按单词搜索 例如,我使用以下代码来初始化它们: public enum Education : Int16 { PHD = 1, } 当我搜索1时,它会显示有博士学位的结果,但当我搜索博士学位时,什么也不会显示 我正在使用ADO.NET进行CRUD操作 这是我在控制器中使用的方法的代码: string conn

我有一个表,我试图在其中搜索,它是为所有工作,除了一个已经添加使用dropdownList

在数据库中,它们被保存为tinyint,所以当我按数字搜索时,它可以工作,但我想按单词搜索

例如,我使用以下代码来初始化它们:

public enum Education : Int16
{
       PHD = 1,
}
当我搜索1时,它会显示有博士学位的结果,但当我搜索博士学位时,什么也不会显示

我正在使用ADO.NET进行CRUD操作

这是我在控制器中使用的方法的代码:

string connectionString = Configuration["ConnectionStrings:WebApplication7ContextConnection"];
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            //SqlDataReader
            connection.Open();
            string email = User.Identity.Name;
            SqlCommand command = new SqlCommand(email, connection);

            if(searchString == null)
            {
            string sql = "Select * From Teacher Where Email = '" + email + "' ORDER BY AddedOn DESC";
            SqlCommand command2 = new SqlCommand(sql, connection);

            using (SqlDataReader dataReader = command2.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    ContactUsMessage teacher = new ContactUsMessage();
                    teacher.Id = Convert.ToInt32(dataReader["Id"]);
                    teacher.Name = Convert.ToString(dataReader["Name"]);
                    teacher.Email = Convert.ToString(dataReader["Email"]);
                    teacher.Phone = Convert.ToString(dataReader["Phone"]);
                    teacher.education = (Education)Convert.ToInt16(dataReader["Education"]);
                    teacher.Message = Convert.ToString(dataReader["Message"]);
                    teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);

                    teacherList.Add(teacher);
                }
            }
            }
            else
            {
                string sql = "Select * From Teacher Where Email = '" + email + "' AND education = '"+searchString+"' AND Message LIKE '%"+searchString+"%' OR Name LIKE '%" + searchString + "%' OR Phone LIKE '%" + searchString + "%'  ORDER BY AddedOn DESC";
                SqlCommand command2 = new SqlCommand(sql, connection);

                using (SqlDataReader dataReader = command2.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        ContactUsMessage teacher = new ContactUsMessage();
                        teacher.Id = Convert.ToInt32(dataReader["Id"]);
                        teacher.Name = Convert.ToString(dataReader["Name"]);
                        teacher.Email = Convert.ToString(dataReader["Email"]);
                        teacher.Phone = Convert.ToString(dataReader["Phone"]);
                        teacher.education = (Education)Convert.ToInt16(dataReader["Education"]);
                        teacher.Message = Convert.ToString(dataReader["Message"]);
                        teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);

                        teacherList.Add(teacher);
                    }
                }

            }


            connection.Close();
        }
        return View(teacherList);

您可以使用Select2 dropdownlist autocomplete+组合框,如下所示:

视图:


希望这对您有所帮助……

请发布您已经尝试过的内容。您提供的信息太少,不清楚。@khalid您能看一下下面我的答案并告诉我是否有效吗?
@Html.DropDownListFor(m => m.StudentId, Enumerable.Empty<SelectListItem>(), "Please select", new { @class = "", /* @Value = 1*/ })

$(document).ready(function () {

    var student = $("#StudentId");

    //for Select2 Options: https://select2.github.io/options.html
    student.select2({
            language: "tr",//don't forget to add language script (select2/js/i18n/tr.js) 
                //dropdownParent: $('#yourModal'), //In order to make search box enabled when using Select2 on Bootstrap modal (otherwise remove "tabindex" from modal properties).
        //minimumResultsForSearch: Infinity, //permanently hide the search box
        minimumInputLength: 0, //for listing all records > set 0
        maximumInputLength: 20, //only allow terms up to 20 characters long         
        multiple: false,
        placeholder: "Seçiniz",
        allowClear: true,
        tags: false, //prevent free text entry
        width: "100%",

        ajax: {
            url: '/Grade/StudentLookup',
            dataType: 'json',
            delay: 250,
            data: function (params) {
                return {
                    query: params.term, //search term
                    page: params.page
                };
            },
            processResults: function (data, page) {
                var newData = [];
                $.each(data, function (index, item) {
                    newData.push({
                            //id part present in data 
                            id: item.Id,     
                            //string to be displayed
                            text: item.Name + " " + item.Surname
                    });
                });
                return { results: newData };
            },
            cache: true
        },
        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
        //templateResult: formatRepo, // omitted for brevity, see the source of this page
        //templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
    });


    //You can simply listen to the select2:select event to get the selected item
    student.on('select2:select', onSelect)

    function onSelect(evt) {
        console.log($(this).val());
    }

        //Event example for close event
        student.on('select2:close', onClose)

        function onClose(evt) {
            console.log('Closed…');
        } 
});
public ActionResult Create()
{ 
    return PartialView("_Create"); //DO NOT fill the dropdownlist in this method
}


public ActionResult StudentLookup(string query)
{
    var students = repository.Students.Select(m => new StudentViewModel
    {
        Id = m.Id,
        Name = m.Name,
        Surname = m.Surname
        //FullName = m.Name + " " + m.Surname //Sending "Name" and "Surname" in one parameter    causes "The specified type member 'FullName' is not supported in LINQ to Entities" error!
    })
    //if "query" is null, get all records
    .Where(m => string.IsNullOrEmpty(query) || m.Name.StartsWith(query)) 
    .OrderBy(m => m.Name);
    return Json(students, JsonRequestBehavior.AllowGet);
}