一个视图上有多个查询结果
本文关键字:查询 结果 视图 一个 | 更新日期: 2023-09-27 18:14:34
我正在尝试学习c# .net,并考虑到所有关于。net核心的宣传,我将从那里开始,但我有点超出我的深度。
我有一个列表(让我们说'国家')从数据库。我点击一个国家,它就会显示该项目的详细信息。如此:
// GET: Database/Details/00000000-0000-0000-0000-000000000000
public async Task<IActionResult> Details(Guid? id)
{
if (id == null)
{
return NotFound();
}
var country = await _context.countries.SingleOrDefaultAsync(s => s.Id == id);
if (subscription == null)
{
return NotFound();
}
return View(country);
}
在details视图中,我想显示两个表。
第一个是'country',它将显示一般信息(资本,货币,大陆)。我现在可以做得很好。
第二个是城市列表(来自名为"cities"的表)。我该怎么做呢?我不知道如何向视图返回第二个结果集。
(希望这个比喻有助于解释它!)
您需要返回一个ViewModel。因此,创建一个类IndexViewModel
或你的动作是如何被调用的(这只是一个最佳实践,你可以按照你想要的方式命名它),并添加两个属性:
public class IndexViewModel
{
public Country Country { get; set; }
public List<City> Cities { get; set; }
}
然后在控制器中返回模型:
// GET: Database/Details/00000000-0000-0000-0000-000000000000
public async Task<IActionResult> Details(Guid? id)
{
if (id == null || subscription == null)
{
return NotFound();
}
var model = new IndexViewModel();
model.Country = await _context.countries.SingleOrDefaultAsync(s => s.Id == id);
model.Cities = SomeFunction();
return View(model);
}
在你的视图中,在文档的顶部添加一个引用:
@model IndexViewModel
您可以通过以下方式访问数据:
@Model.Country
@Model.Cities
您将需要创建一个ViewModel,该ViewModel为您提供存储这两个列表的位置,并将其传递给您的视图。在下面的例子。
public class MyViewModel{
public IEnumerable<Country> Countries { get; set; }
public IEnumerable<City> Cities { get; set; }
}