我们可以使用ViewModel来解决这个问题。ViewModel是一个视图需要的数据模型,它可以将多个模型及其数据组合到一个模型中,以方便页面显示所需的数据。
例如,我们有两个模型:Product和Category。我们可以创建一个名为ProductViewModel的模型,其中包含我们需要在视图中显示的Product和Category的数据。定义ProductViewModel如下:
public class ProductViewModel
{
public Product Product { get; set; }
public Category Category { get; set; }
}
在控制器中,我们将从数据库中调用Product和Category并将它们放入ProductViewModel中的List。示例代码如下:
public class ProductController : Controller
{
private readonly ApplicationDbContext _dbContext;
public ProductController(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task Index()
{
var products = await _dbContext.Products.ToListAsync();
var categories = await _dbContext.Categories.ToListAsync();
var productsViewModel = new List();
foreach (var product in products)
{
var category = categories.FirstOrDefault(c => c.Id == product.CategoryId);
productsViewModel.Add(new ProductViewModel { Product = product, Category = category });
}
return View(productsViewModel);
}
}
现在,我们已经准备好在视图中使用ProductViewModel中的数据来呈现我们的产品和类别信息。示例代码如下:
@model List
@foreach (var productViewModel in Model)
{
@productViewModel.Product.Name
@productViewModel.Product.Description
@productViewModel.Category.Name
}
现在,我们可以在不使用数据库的情况下将模型列表显示在我们的MVC应用程序中。