我试图实现自动完成功能,显示匹配的数据库表时,用户输入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错误。我的代码哪里做错了?我将感激你的帮助!
1条答案
按热度按时间yyhrrdl81#
将get方法更改为post [HttpPost]。
如果你想使用as get方法,那么你必须更改方法签名并从查询字符串中读取数据。
字符串