jquery 如何修复“无法加载资源:当我使用自动完成时,服务器在ASP.NETMVC中以500()的状态响应?

m3eecexj  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(131)

我试图实现自动完成功能,显示匹配的数据库表时,用户输入2个字母在@html.textboxfor在剃刀页,但不断得到500错误,每次我输入到文本框输入。
这是我的控制器:

[HttpGet]
        public ActionResult PopulateUserInput(string input)
        {

            List<DataForm> studentList = new List<DataForm>();
            using (SqlConnection con = new SqlConnection(cnn))
            {
                con.Open();

                SqlCommand cmd = new SqlCommand("SELECT FirstName FROM table1 where FirstName like '@input' + '%'", con);
                cmd.Parameters.AddWithValue("@input", input);

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        DataForm studentData = new DataForm();
                        studentData.FirstName = Convert.ToString(reader["FirstName"]);
                        studentList.Add(studentData);
                    }
                }

            }

            return Json(studentList, System.Web.Mvc.JsonRequestBehavior.AllowGet);
        }

字符串
这是我的视图页面:

@using (Html.BeginForm("DataEntry", "DataForm", new { @class = "form-control", style = "display: flex;" }))
{
    @Html.AntiForgeryToken()

                @Html.TextBoxFor(m => m.FirstName,new { @id="firstName", @class = "form-control", tabindex = 1,@required = "required" })

}

@section Scripts {
    <link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
$(function() {
                $("#firstName").autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: '@Url.Action("PopulateUserInput", "DataForm")',
                            data: { input: request.term },
                            dataType: "json",
                            type: "GET",
                            success: function (data) {
                                response(data);
                            }
                        });

                },
                    minLength: 2 // Minimum characters before autocomplete starts 
                });
            });

</script>
    }


我甚至将其中一个数据直接从列复制到文本框中,但它仍然返回500错误。我的代码哪里做错了?我将感激你的帮助!

yyhrrdl8

yyhrrdl81#

将get方法更改为post [HttpPost]。
如果你想使用as get方法,那么你必须更改方法签名并从查询字符串中读取数据。

public ActionResult PopulateUserInput()
{
   string input= this.Request.QueryString["input"];
           
   ...
}

字符串

相关问题