[英]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.