我在ASP .net core mvc中得到了这个简单的示例。它响应jquery的自动完成功能,因此我得到了一个项目列表(如您所见,它向客户端发送了JSon)
public JsonResult Autocomplete(string term)
{
var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };
var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);
return Json(filteredItems);//, JsonRequestBehavior.AllowGet);
}
效果很好。我向客户返回了一个字符串列表。但我希望它发送我自己的对象的字段:
List<PrvCategory> oCategoriesList;
//here I load the list with custom code. then....
var filteredItems = oCategoriesList.Where(item => item.FullName.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);
return Json(filteredItems);
所以我得到了PrvCategory的列表。我想像工作的示例一样返回一个字符串列表,并取其中的一个成员说:
public class PrvCategory
{
public int CategoryId { get; set; }
public String FullName { get; set; }
}
所以:在我退还JSon之前,
var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };
我现在要返回集合中所有对象的全名。
我知道它一定很简单...但是我找不到解决方法。 谢谢
答案 0 :(得分:1)
您可以使用linq选择PrvCategory的单个属性:
List<PrvCategory> oCategoriesList;
var filteredItems = oCategoriesList
.Where(item => item.FullName.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0)
.Select(i => i.FullName);
return Json(filteredItems);
答案 1 :(得分:0)
如果您具有数据库中所有对象的列表,并且只想发送选定的属性以Json的身份查看。可以使用以下方法完成:
var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);
return Json(filteredItems.Select(x => new
{
fullName = x.FullName,
}));
整个功能应如下所示:
public JsonResult Autocomplete(string term){
var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };
var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);
return Json(filteredItems.Select(x => new
{
fullName = x.FullName,
})); //, JsonRequestBehavior.AllowGet); }