我想在asp.net MVC中实现标记功能我已经参考了“Bootstrap Tags”。以下是适合我的示例代码。在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中的静态数据!!!
答案 0 :(得分:0)
您的第一个选项有效意味着您的citynames.json
文件格式正确JSON,因此无需使用return Json(data, ...);
再次序列化它(如果您这样做,那么您需要使用脚本中的JSON.parse()
再次解析它。
相反,只需将数据作为ContentResult
public ContentResult JsonData()
{
var data = System.IO.File.ReadAllText(Server.MapPath(@"~/Content/citynames.json"));
return Content(data);
}