使用Html.TextBoxFor的asp.net MVC自动完成

时间:2015-12-11 17:28:27

标签: asp.net-mvc-4 jquery-autocomplete

我正在修改预先存在的应用程序。我正在尝试添加jquery自动完成功能。我有它工作并调用控制器,但问题是输入字段中的name属性是“someClass.someMethod”因此我不能把它放在这样的控制器参数中,但仍然想要满足asp.net的模型绑定规则,我该怎么办?

控制器:

datareader

查看:

        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})'
         });
     });

1 个答案:

答案 0 :(得分:0)

使用This Post

我能够通过抓取输入字段的值并在每个函数调用上传递它(或每次用户输入字符时)来使其工作。

现在,当用户从自动完成列表中选择项目并选择提交时,框架形式的幕后模型绑定仍然可以像最初实现的那样工作。

以下是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技能不是很强,我无法立刻解决这个问题。希望这有助于某人。