私の見解では、私は持っています。
@using (Ajax.BeginForm("AddExistingSite", new AjaxOptions { UpdateTargetId = "siteRows" }))
{
<input type="text" name="q" style="width: 800px"
data-autocomplete="@Url.Action("SiteSearch", "DataService", new { contractId = @Model.Contract.ContractId })" />
<input type="submit" value="Add site to contract" />
}
私のコントローラーには
public ActionResult SiteSearch(string term, int contractId)
{
using (var db = new SherryGreenGroupEntities())
{
var sites = db.Sites
.Include("SiteContracts")
.Where(x => x.SiteContracts.All(y => y.ContractId != contractId || y.EndDate.HasValue) &&
x.Address.Contains(term))
.Take(10)
.Select(x => new { id = x.SiteId, label = x.Address }).ToList();
return this.Json(sites, JsonRequestBehavior.AllowGet);
}
}
jqueryを設定しました。
$(":input[data-autocomplete]").each(function () {
$(this).autocomplete({ source: $(this).attr("data-autocomplete") });
});
オートコンプリートは機能していますが、知りたいのは、選択したアイテムのIDを取得して、コントローラーに投稿できるようにするために何をするかです。