簡體   English   中英

使用MVC控制器的Typeahead / bootstrap-tagsinput無法正常工作

[英]Typeahead/bootstrap-tagsinput with MVC controller not working

我想在asp.net MVC中實現標簽功能,我從“ Bootstrap標簽 ”中獲得了參考。 以下是對我來說正常工作的示例代碼。 就像在URL中一樣,我已經傳遞了靜態JSON文件路徑。

    var citynames = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: {
        //url: 'http://localhost:20182/Home/JsonData',
        url: '../Content/citynames.json',

        filter: function (list) {
            return $.map(list, function (cityname) {
                return { name: cityname };
            });
        }
    }
});
citynames.initialize();

var elt = $('.example_typeahead > > input');

elt.tagsinput({
    typeaheadjs: {
        name: 'cityname',
        displayKey: 'name',
        valueKey: 'name',
        source: citynames.ttAdapter()
    }});

但是,一旦我用控制器更改了URL,它就無法按以下方式工作。 我剛用完整的URL以及控制器和操作更改了URL。

    prefetch: {
    url: 'http://localhost:20182/Home/JsonData',
    //url: '../Content/citynames.json',

    filter: function (list) {
        return $.map(list, function (cityname) {
            return { name: cityname };
        });
    }
}

我的動作如下

    public JsonResult JsonData()
    {
        var data = System.IO.File.ReadAllText(Server.MapPath(@"~/Content/citynames.json"));
        return Json(data, JsonRequestBehavior.AllowGet);

    }

請讓我知道如何使用控制器和操作傳遞json數據,而不是使用json文件URL中的靜態數據!

第一個選項起作用的事實意味着您的citynames.json文件已正確格式化為JSON,因此無需使用return Json(data, ...);再次對其進行序列化return Json(data, ...); (如果這樣做了,則需要使用腳本中的JSON.parse()再次將其解析回去)。

相反,只需將數據作為ContentResult返回

public ContentResult JsonData()
{
    var data = System.IO.File.ReadAllText(Server.MapPath(@"~/Content/citynames.json"));
    return Content(data);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM