0

ブートストラップ タイプアヘッドを使用しようとしていますが、アクション (ASP.NET MVC 4) を呼び出すことができません。以下はブラウザでレンダリングされます。

<div class ="control-group">
<div class="controls">
    <input autocomplete="off" data-provide="typeahead" data-url="/GetPets" id="Pets" type="text" />
</div>
   </div>

<script type="text/javascript">
    $(function () {
        $('[data-provide=typeahead]').each(function () {
            var self = $(this);
            self.typeahead({
                source: function (term, process) {
                    var url = self.data('url');

                    return $.getJSON(url, { term: term }, function (data) {
                        return process(data);
                    });
                }
            });
        });
    });

私のコントローラーメソッドは次のようになります

    [HttpGet]
    public JsonResult GetPets(string term)
    {
        // get data from DB. Here for simplicity sake I just make data up
        var nameList = new List<string>
{
    "Dog", "Cat", "Ant", "Alligator", "Beaver", "Camel", "Clam", "Dragonfly", "Goat"
};

        var results = nameList.Where(n => n.ToLower().Contains(term.ToLower()));

        return new JsonResult()
        {
            Data = results.ToArray(),
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };
    }
4

1 に答える 1

0

URLルーティングの問題のようです。「/GetPets」を使用していますが、「/controllerName/GetPets」を使用する必要がある場合があります。推奨事項として、Json を返すアクションに [HttpPost] を使用し、代わりにクライアント側で $.post を使用してみてください。

于 2013-07-26T14:08:19.573 に答える