我是asp.net和razor的新手。我正在尝试将名为product的字段与数据库中的结果进行自动完成。
我创建了autocomplete.cs模型,并且票证控制器已经在项目中,所以我只是添加了操作。然后new.cshtml我添加了代码。我错了什么。任何帮助表示赞赏。
问题是当我转到new.cshtml页面并且jquery不起作用而textbox什么都不做。它搞砸了我使用jquery隐藏的隐藏字段。它出现了。
这是auto complete.cs
using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Configuration;
namespace HelpDesk.Models
{
public class PartNumber
{
public string[] GetPartNumber()
{
List<string> partnumber = new List<string>();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RASConnectionString"].ConnectionString))
{
con.Open();
SqlCommand comm = new SqlCommand("select * from pltjones.dbo.inv_master", con);
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
partnumber.Add(reader["part_no"].ToString());
}
}
return partnumber.ToArray();
}
}
然后是这个应用程序中已经制作的票证控制器。我正在做一些我添加的内容。
public ActionResult Autocomplete(string term)
{
var items = new PartNumber().GetPartNumber();
var filteredItems = items.Where(
item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0
);
return Json(filteredItems, JsonRequestBehavior.AllowGet);
}
这是剃须刀视图new.cshtml
<script type="text/javascript">
$(document).ready(function () {
$('#product')
.each(function () {
$(this).autocomplete({
source: '@Url.Action("Autocomplete")'
});
});
});
<tr id="trEmail">
<td colspan="2">
<label for="product">Enter product: </label>
<input type="text" name="product" id="product" />
</tr>
答案 0 :(得分:0)
您还没有说过您正在使用的自动填充功能,但无论如何都不需要拨打.each()
,因为只有一个匹配,所以请改用它:
$('#product').autocomplete(... etc ...)
当有人选择某个项目时,您没有提供任何代码,例如
$('#product').autocomplete({
source: // as above
select: function (event, ui) {
$("#product").val(ui.item.value);
}
});