2015-12-11 2 views
0

Я изменяю существующее существо. Я пытаюсь добавить функцию автозаполнения jquery. У меня есть работа и вызов контроллера, но проблема заключается в атрибуте name в поле ввода: «someClass.someMethod», потому что я не могу поместить это в параметр контроллера, как это, но все же хочу удовлетворить привязку модели asp.net правила, что я могу сделать?asp.net MVC autocomplete с Html.TextBoxFor

Контроллер:

 public JsonResult GetPs(string pN, PSModel pS) 
    { 
     List<string> pNs = null; 

     pNs= pS.PEntryBL.BusinessLayerPS.PS 
         .Where(x => x.Text.StartsWith(pN)).Select(y => y.Text).ToList(); 

     return Json(pNs, JsonRequestBehavior.AllowGet); 
    } 

Вид:

 $(function() { 
     $("#autoCompletePNBox").autocomplete({ 
      source: '@Url.Action("GetPs", "PS", new {pS = @Model})' 
     }); 
    }); 

В Форме:

  @Html.Label("Scan PN: ", new { @class = "DFont"}) 

     @Html.TextBoxFor(r => r.PEntryBL.PS, new { @class = "pageFont", id = "autoCompletePNBox" }) 
+0

[Переопределить атрибут имени] (http://stackoverflow.com/questions/6057865/asp-net-mvc-3-override-name-attribute-with-textboxfor). – Jasen

+0

Когда правильное имя будет найдено через автозаполнение, а затем отправлено, что приведет к повреждению привязки модели. – eaglei22

+0

Какое имя вы пытаетесь связать с какой моделью? – Jasen

ответ

0

Использование This Post

Я был в состоянии заставить его работать, захватывая значение го e поле ввода и передачи его при каждом вызове функции (или каждый раз, когда пользователь вводит символ).

Теперь, когда пользователь выбирает элемент из списка автозаполнения и выбирает submit, тогда привязка структуры фреймворков за кулисами будет по-прежнему работать, как первоначально реализовано.

Вот изменение JQuery код:

 <script type="text/javascript"> 
      $(function() { 
       var src = '@Url.Action("GetPs", "PS", new {pS = @Model})' 
       $("#autoCompletePNBox").autocomplete({ 
        source: function (request, response) { 
         $.ajax({ 
          url: src, 
          dataType: "json", 
          data: { 
           pN: $("#autoCompletePNBox").val() 
          }, 
          success: function (data) { 
           response(data); 
          } 
         }); 
        } 
       }); 
      }); 

Я не мог понять это сразу же, как мои навыки Jquery не очень сильны. Надеюсь, это помогает кому-то.

Смежные вопросы