You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中Autocomplete触发500错误的排查与解决

问题分析:Razor页面自动补全触发500服务器错误

你的代码存在两个核心问题,直接导致了服务器500错误:

1. SQL语句参数化错误

你在SQL查询中把参数@input包裹在了单引号内,这会让数据库将@input视为固定字符串字面量,而非可替换的参数,完全无法匹配用户输入的内容。同时通配符%的拼接方式也不符合参数化查询的规范。

错误代码片段:

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

修正后的两种可选写法:

方式一:在参数值中拼接通配符(推荐,更安全)

SqlCommand cmd = new SqlCommand("SELECT FirstName FROM table1 WHERE FirstName LIKE @input", con);
cmd.Parameters.AddWithValue("@input", $"{input}%");

方式二:在SQL语句中拼接通配符

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

2. jQuery UI Autocomplete数据格式不匹配

jQuery UI的Autocomplete组件默认期望的数据源是纯字符串数组,或者包含label/value属性的对象数组。你当前返回的List<DataForm>虽然包含FirstName属性,但前端无法直接识别为可显示的选项。

修正方法二选一:

控制器端修正(直接返回字符串数组)

return Json(studentList.Select(s => s.FirstName).ToList(), System.Web.Mvc.JsonRequestBehavior.AllowGet);

前端JS修正(处理返回的对象)

在AJAX的success回调中提取FirstName字段:

success: function (data) {
    response($.map(data, function (item) {
        return item.FirstName;
    }));
}

完整修正后的控制器代码

[HttpGet]
public ActionResult PopulateUserInput(string input)
{
    List<string> studentNames = new List<string>();
    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())
            {
                studentNames.Add(Convert.ToString(reader["FirstName"]));
            }
        }
    }
    return Json(studentNames, System.Web.Mvc.JsonRequestBehavior.AllowGet);
}

额外检查项

  • 确认cnn变量是有效的数据库连接字符串,且应用程序具备数据库访问权限
  • 检查DataForm类的FirstName属性是否为public string FirstName { get; set; }的正确定义

内容的提问来源于stack exchange,提问作者smbbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:37:51