调节器
- public ActionResult Search(string id)
- {
- id= Request.QueryString["term"];
- var routeList = db.Movies.Where(r => r.Title.Contains(id))
- .Take(5)
- .Select(r => new { id = r.MovieID,label = r.Title,name = "MovieID" });
- return Json(routeList,JsonRequestBehavior.AllowGet);
- }
视图:
- <input type="hidden" id="MovieID" name="MovieID" />
- <input type="text" id="SelectedMovie" value=""/>
- <script type="text/javascript" language="javascript">
- $("#SelectedMovie").autocomplete({
- source: function (request,response) {
- $.ajax({
- url: "/Transaction/Search",type: "POST",dataType: "json",data: { id: request.term },success: function (data) {
- response($.map(data,function (item) {
- return { label: item.label,value: item.id }; //updated code
- }));
- }
- });
- },select: function (event,ui) {
- $("#MovieID").val(ui.item.value);
- $("#SelectedMovie").val(ui.item.label);
- return false;
- }
- });
- </script>
我有一些视频商店应用程序当我去租一部电影时,我需要一个带有电影的组合框,我可以使用自动完成来选择.
还要求的是,只有ID(值)被保存到数据库中,而不是文本本身.
编辑:这里是完整的工作示例
解决方法
由于您只将一个字符串传递到服务器端的Search()函数,所以您要通过$.ajax()调用传递的数据元素需要更改.
- public ActionResult Search(string id)//I think that the id that you are passing here needs to be the search term. You may not have to change anything here,but you do in the $.ajax() call
- {
- id= Request.QueryString["term"];
- var routeList = db.Movies.Where(r => r.Title.Contains(id))//this is a text filter no?
- .Take(5)
- .Select(r => new { id = r.MovieID,name = "MovieID" });
- return Json(routeList,JsonRequestBehavior.AllowGet);
- }
- $("#MovieID").autocomplete({
- source: function (request,response) {
- $.ajax({
- url: "/Transaction/Search",//original code
- //data: { searchText: request.id,maxResults: 10 },//updated code; updated to request.term
- //and removed the maxResults since you are not using it on the server side
- data: { id: request.term },success: function (data) {
- response($.map(data,function (item) {
- //original code
- //return { label: item.FullName,value: item.FullName,id: item.TagId };
- //updated code
- return { label: item.label,value: item.label,id: item.id };
- }));
- },ui) {
- //update the jQuery selector here to your target hidden field
- $("input[type=hidden]").val(ui.item.id);
- }
- });
- },});
让我知道这是否有效/有帮助!