2

我需要一些帮助。我在 MVC3 中使用剃刀视图。我有一个具有自动完成功能的搜索栏,它运行良好。现在根据要求。我需要在搜索文本框旁边创建一个单选按钮,并根据选择的单选按钮值,我需要从不同的表中获取自动完成文本。这是因为,我的索引页面视图有 3 个不同的 webgrid 列表。因此,搜索应该基于用户打算搜索的内容,通过将参数中的选项指定为单选按钮。

我在这里有我的常规 jQuery 代码:

$(document).ready(function () {
    $(":input[data-autocomplete]").each(function () {
        $(this).autocomplete({ source: $(this).attr("data-autocomplete") });
    })
})*  

我修改了上面的传递第二个参数: -

$(document).ready(function () {

    var radioval = $("#form0").find("input[type=radio]").attr("value");
    $(":input[data-autocomplete]").each(function (request) {
        var srctxt = $(this).attr("value");
        $(this).autocomplete({
            source: "/Facility/FindNames/?term = " + $(this).attr("value") + "&stype = " + radioval
        });
    })
})

我的意图是传递第二个参数搜索类型,它是一个单选按钮组,然后在下面的控制器中根据传递的值更改查询以从不同的表中进行选择。

--控制器方法

 public JsonResult FindNames(string term, string stype)
    {

        string radioValue = null;

        var result = _service.GetAllFacility()
                    .Where(r => r.FacilityName.Contains(term))
                    .Take(10)
                    .Select(r => new { label = r.FacilityName });

        return Json(result, JsonRequestBehavior.AllowGet);
    }

但是 stype 的值始终为 null。使用萤火虫我可以看到它确实有价值。有人可以告诉我我的代码有什么问题吗?实现这种搜索功能的最佳方法是什么?

4

1 回答 1

3

您可以source function按以下方式处理以传递多个参数

var radioval = $("#form0").find("input[type=radio]").attr("value");
$(":input[data-autocomplete]").each(function() {

     $this = $(this);
     var srctxt = $this.val();
     $this.autocomplete({
          source: function (request, response) {
             $.getJSON('/Facility/FindNames/',
             {
                stype: radioval,
                term: srctxt
             }, response);
          }
     });
})
于 2012-07-17T21:46:29.893 回答