返回JsonResult我自己的对象



我在ASP.net核心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" };

我现在想返回集合中所有对象的FullName。

我知道这一定很简单。。。但我找不到做这件事的方法。谢谢

您可以使用linq:选择PrvCategory的单个属性

List<PrvCategory> oCategoriesList;
var filteredItems = oCategoriesList
.Where(item => item.FullName.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0)
.Select(i => i.FullName);
return Json(filteredItems);

如果您有数据库中所有对象的列表,并且只想发送选定的属性以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); }

最新更新