gpt4 book ai didi

c# - Controller 中的 MVC3 自动完成和 POST 方法

转载 作者:行者123 更新时间:2023-11-28 09:44:59 25 4
gpt4 key购买 nike

我有一个 MVC Razor View 页面作为表单,供人们输入详细信息并提交到数据库。它可以使用下拉列表,但我想向表单添加一个自动完成文本框。这工作正常,但是当回发到 POST Controller 时,它始终将人员的 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>

Controller :

 [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);

}

最佳答案

查看您的 AutoCompleteSuggestions 代码,您在返回 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);

关于c# - Controller 中的 MVC3 自动完成和 POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com