从jquery自动完成到mvc控制器的额外参数

时间:2015-02-20 13:55:53

标签: c# jquery asp.net-mvc jquery-autocomplete

我需要一些关于JQuery自动完成功能的帮助。 我试图自动完成按国家/地区过滤的邮政编码,但为此我需要将一个国家/地区值和自动填充术语一起发送到我的mvc控制器。

var country的值应该作为控制器动作的额外参数发送,但我似乎无法实现这一点。

这是我没有额外参数的设置:

查看:

@Html.TextBoxFor(j => j.MainAddressCountry, new { data_autocomplete_url = Url.Action("AutoCompletePostalCode", "Location")})

脚本:

var country = $("#MainAddressCountry");

$('*[data-autocomplete-url]')
    .each(function() {
        $(this).autocomplete({
            source: $(this).data("autocomplete-url"),
            messages: {
                noResults: '',
                results: function() {
                }
            },
            focus: function() {
                var menu = $(this).data("uiAutocomplete").menu.element;
                var focused = menu.find("li:has(a.ui-state-focus)");
                if (menu.parent().hasClass('scroll-wrapper')) {
                    setTimeout(function() {
                        var height = menu.parent().height();
                        if (focused.position().top + focused.height() > height) {
                            menu.scrollTop(menu.scrollTop() + parseInt(focused.position().top) + focused.height() - height);
                        }
                    }, 1);
                }
            },
            "open": function() {
                var menu = $(this).data("uiAutocomplete").menu.element;
                menu.addClass('scrollbar-dynamic').addClass('autocomplete-scroll');
            }
        });
    }
);

控制器:

public ActionResult AutoCompletePostalCode(string term)
    {
        var items = new[] {"2220", "2222", "1800", "1900", "3541", "5214", "9000", "9002", "9006"};

        var filteredItems = items.Where(
            item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0
            );
        return Json(filteredItems, JsonRequestBehavior.AllowGet);
    }

任何可能知道该怎么做的人? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将构建source属性的方式更改为以下内容:

 source: function(request, response) {
    $.getJSON("url here", { parameter1: 'your first parameter', parameter2: 'your second parameter' }, 
              response);
  },

控制器操作:

public JsonResult Test(string parameter1, string parameter2)
{
 //code
}