我已经实现了自动完成,并且在选择项目后,文本框中的标签和值出现了问题。键入邮政编码时,我会在下拉列表中看到标签:
但在我选择一个后,将显示值(需要保存到数据库的ID),而不是文本框中显示的标签:
以下是我的控制器方法:
public JsonResult FindZipCode(string term)
{
VetClinicDataContext db = new VetClinicDataContext();
var zipCodes = from c in db.ZipCodes
where c.ZipCodeNum.ToString().StartsWith(term)
select new { value = c.ZipCodeID, label = c.ZipCodeNum};
return this.Json(zipCodes, JsonRequestBehavior.AllowGet);
}
<script type="text/javascript">
$(document).ready(function() {
$("#ZipCodeID").autocomplete({
source: '<%= Url.Action("FindZipCode", "Customers") %>',
});
});
</script>
<div class="ui-widget"><input type="text" name="ZipCodeID" id="ZipCodeID" /></div>
编辑:这是我最后的工作代码:
控制器:
{
VetClinicDataContext db=新建VetClinicDataContext();
其中c。ZipCodeNum.ToString公司().StartsWith(术语)
选择new{value=c.ZipCodeID,label=c.ZipCodeNum};
返回这个.Json(邮政编码,JsonRequestBehavior.AllowGet文件);
}
<script type="text/javascript">
$(document).ready(function() {
$("#ddZipCode").autocomplete({
source: '<%= Url.Action("FindZipCode", "Customers") %>',
select: function(event, ui) {
var zipCodeID = parseInt(ui.item.value, 1);
$("#ddZipCode").val(ui.item.label);
$("#ZipCodeID").val(ui.item.value);
return false;
}
});
});
</script>
<div class="ui-widget"><input type="text" name="ddZipCode" id="ddZipCode" /></div>
<%= Html.Hidden("ZipCodeID")%>