Using .Net Nore C# MVC
我有以下代码:
我的数据:
public IEnumerable<string> GetData(string id)
{
return _context.TableData
.Where(r => r.ID == id)
.Select (r => r.Name).ToList();
}
我的 MVC 控制器:
public IActionResult GetDDL(string id)
{
var result = _repo.GetData(id);
//Above gives me
//[0] = "United States"
//[1] = "United Kingdom"
var json = JsonConvert.SerializeObject(result);
//Above json convert gives me ["United States","United Kingdom"]
return Json(json);
}
上面的代码确实返回了我 Json,但我想知道如何创建新的 JSON,以便它返回我,如下所示:
[{"Text":"United States","Text":"United Kingdom"}]
基本上,我想将其绑定回我的下拉列表,该下拉列表需要带有 JSON 数组的"文本"属性。
1. 在控制器中
public IActionResult GetDDL(string id)
{
var result = _repo.GetData(id);
var withProp = result.Select(x => new { Text = x });
var json = JsonConvert.SerializeObject(withProp);
return Json(json);
//Or shorter:
var result = _repo.GetData(id).Select(x => new { Text = x });
var json = JsonConvert.SerializeObject(result);
return Json(json);
}
2. 在存储库中
您不能返回匿名类型,因此您应该创建一个将保存数据的类,并使用它来从存储库返回:
public class Data
{
public string Text { get; set; }
}
public IEnumerable<Data> GetData(string id)
{
return _context.TableData
.Where(r => r.ID == id)
.Select (r => new Data { Text = r.Name });
}
控制器中的使用情况保持不变,然后:
public IActionResult GetDDL(string id)
{
var result = _repo.GetData(id);
var json = JsonConvert.SerializeObject(result);
return Json(json);
}