我正在尝试学习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);
}
在详细信息视图中,我想显示两个表。
第一个是&#39; country&#39;,它将显示通用信息(Capital,Currency,Continent)。我现在可以做得很好。
第二个是城市列表(来自名为&#39; Cities&#39;的表)。我该怎么做?我无法解决如何将第二个结果集返回到视图的问题。
(希望这个比喻有助于解释它!)
答案 0 :(得分:3)
您需要创建一个ViewModel,为您提供存储两个列表并将其传递给视图的位置。示例如下。
public class MyViewModel{
public IEnumerable<Country> Countries { get; set; }
public IEnumerable<City> Cities { get; set; }
}
答案 1 :(得分:3)
您需要返回ViewModel。因此,创建一个类IndexViewModel
或如何调用您的操作(这只是一个最佳实践,您可以根据需要命名)并添加2个属性:
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