控制器中的 MVC3 自动完成和开机自检方法
MVC3 Autocomplete and POST Method in Controller
我得到了一个MVC Razor View页面作为人们输入详细信息并提交到数据库的表单。它使用下拉列表工作,但我想在表单中添加一个自动完成文本框。这工作正常,但是当回发到 POST 控制器时,它会始终将人员的 ID 设置为 0。有什么想法吗?
谢谢
Javascript:
script type="text/javascript">
$(document).ready(function () {
$("#PersonName").autocomplete({
source: '@Url.Action("AutocompleteSuggestions")',
minLength: 2,
select: function (event, ui) {
if (ui.item) {
$("#PersonName").val(ui.item.label);
$("#PersonId").val(ui.item.value);
}
}
});
});
</script>
控制器:
[HttpPost]
public ActionResult Create(MappingModel view)
{
if (ModelState.IsValid)
{
var entity = new PersonContempancy();
entity.PersonId = view.PersonId;
entity.FrameworkId = view.FrameworkId;
entity.ContempancyCategoryId = view.ContempancyCategoryId;
entity.ContempancyId = view.ContempancyId;
entity.ContempancyLevelId = view.ContempancyLevelId;
entity.FrameworkLevelId = view.FrameworkLevelId;
db.PersonContempancies.Add(entity);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Contepancies = db.Contempancies.ToList();
ViewBag.ContempancyCategory = db.ContempancyCategories.ToList();
ViewBag.ContempancyLevel = db.ContempancyLevels.ToList();
ViewBag.FrameworkLevel = db.FrameworkLevels.ToList();
ViewBag.Person = db.People.ToList();
ViewBag.Framework = db.Frameworks.ToList();
return View();
}
public ActionResult AutocompleteSuggestions(string term)
{
var namelist = db.People.Where(c => c.PersonName.Contains(term)).Select(c => new { value = c.PersonId, label = c.PersonName}).Distinct().Take(10);
return Json(namelist.ToArray(), JsonRequestBehavior.AllowGet);
}
查看您的自动完成建议代码,在返回 JSON 时,您似乎只发回人名,而不是人的 ID。如果我理解正确,您需要同时返回姓名和 ID,并通过自动完成函数的选择函数中的 JQuery 设置人员 ID。它应该(大致)看起来像这样:
var namelist = (from c in db.People where c.PersonName.Contains(term) select new { c.PersonName, c.PersonID}).Distinct().Take(10).ToArray();
return Json(namelist.ToArray(), JsonRequestBehavior.AllowGet);
和
$("#searchTerm").val(ui.item.value.PersonName);
$("#PersonID").val(ui.item.value.PersonID);
相关文章:
- 开机自检无法正常工作,出现错误
- 类型错误:无法读取开机自检后未定义的属性“正文”(平均值)
- 在 AngularJS 和 CodeIgniter3 中开机自检数据时出现 CORS 错误
- html 开机自检数据未发送
- 快递.js开机自检空要求正文
- 取消选中通过开机自检 [] 中的回显选中的复选框
- 通过开机自检将 XML 发送到另一台服务器
- 控制器中的 MVC3 自动完成和开机自检方法
- 角度 UI 模式开机自检
- 控制器操作参数未从 AJAX 开机自检正确填充
- 王牌编辑器 - 通过开机自检在服务器上保存/发送会话
- ASP.NET Web API 2 - 如何开机自检
- 无法向服务器发送开机自检请求
- 在没有插件的情况下验证验证码?-- 跨服务器开机自检
- 默认$resource开机自检数据
- 尝试开机自检“选择”HTML表单输入时出现PHP错误
- 开机自检时重定向
- 请求方法显示选项而不是开机自检
- 快4:开机自检方法
- Web 服务器不允许使用开机自检方法