2

ここで助けが必要です。MVC3 でカミソリ ビューを使用しています。正常に機能しているオートコンプリート機能を備えた検索バーがあります。今、要件に従って。検索テキスト ボックスの横にラジオ ボタンを作成する必要があり、選択したラジオ ボタンの値に基づいて、さまざまなテーブルからオートコンプリート テキストを取得する必要があります。これは、インデックス ページ ビューに 3 つの異なる Web グリッド リストがあるためです。そのため、パラメーターのオプションをラジオ ボタンとして指定することにより、ユーザーが検索しようとしている内容に基づいて検索を実行する必要があります。

ここに通常のjQueryコードがあります:

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

2番目のパラメーターを渡すように上記を変更しました:-

$(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
        });
    })
})

私の意図は、ラジオ ボタン グループである 2 番目のパラメーター検索タイプを渡し、渡された値に基づいて下のコントローラーで、クエリを変更して別のテーブルから選択することです。

--コントローラーメソッド

 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 になります。firebug を使用すると、価値があることがわかります。誰かが私のコードの何が問題なのか教えてもらえますか? この種の検索機能を実装する最良の方法は何ですか?

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 に答える