C# 如何在视图中使用多个模型/上下文(按Id路由)?

C# 如何在视图中使用多个模型/上下文(按Id路由)?,c#,asp.net-mvc,asp.net-core,asp.net-core-mvc,asp.net-core-3.0,C#,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Asp.net Core 3.0,这是视图中的代码 @model BalanceSheets; <tr class="row100 body"> <td class="cell100 column1"><bold>@Html.DisplayNameFor(model => model.BalanceSheet2019.Inventories): </bold></td> <td class="cell100 column2">

这是视图中的代码

@model BalanceSheets;
<tr class="row100 body">
       <td class="cell100 column1"><bold>@Html.DisplayNameFor(model => model.BalanceSheet2019.Inventories): </bold></td>
       <td class="cell100 column2">@string.Format(KiloFormat(Convert.ToInt64(Model.BalanceSheet2019.Inventories)), Model.BalanceSheet2019.Inventories)</td>
       <td class="cell100 column2">@string.Format(KiloFormat(Convert.ToInt64(Model.BalanceSheet2018.Inventories)), Model.BalanceSheet2018.Inventories)</td>
       <td class="cell100 column2">@string.Format(KiloFormat(Convert.ToInt64(Model.BalanceSheet2017.Inventories)), Model.BalanceSheet2017.Inventories)</td>
    </tr>
这是余额表2019/18/17.cs代码

public class BalanceSheet2019
{
    [Required]
    [Key]
    [Display(Name = "ID")]
    public int Id { get; set; } //1

    [Display(Name = "Cash and cash equivalents")] //4
    public double Cash_and_cash_equivalents{ get; set; }

    [Display(Name = "Short-term investments")] //4
    public double Short_term_investments { get; set; }

    .....

}
这是来自平衡表控制器的代码

public async Task<IActionResult> BalanceSheet(string Id)
    {
        if (Id == null)
        {
            return NotFound();
        }

        var balanceSheets = await _bscontext.BalanceSheet2019
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);

        if (balanceSheets == null)
        {
            return NotFound();
        }

        return View(balanceSheets);
    }
通过使用该代码,我得到以下错误,可能是因为我使用的是“var balanceSheets=wait _bscontext.BalanceSheet2019”而不是其他内容
->处理请求时发生未处理的异常。InvalidOperationException:传递到ViewDataDictionary的模型项类型为“Project.Models.BalanceSheet2019”,但此ViewDataDictionary实例需要类型为“Project.Models.BalanceSheets”的模型项。Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureRecompatible(对象值)

除非我遗漏了什么,否则您只需更新模型,添加水合物并返回:

var model = new BalanceSheets();
model.BalanceSheet2019 = await _bscontext.BalanceSheet2019
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);
model.BalanceSheet2018 = await _bscontext8.BalanceSheet2018
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);
model.BalanceSheet2017 = await _bscontext7.BalanceSheet2017
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);    

return View(model);
我不得不猜测其中的一些,没有看到更多的实体和数据库上下文

    private readonly BalanceSheets2019Context _bscontext;

    private readonly BalanceSheets2018Context _bscontext8;

    private readonly BalanceSheets2017Context _bscontext7;
var model = new BalanceSheets();
model.BalanceSheet2019 = await _bscontext.BalanceSheet2019
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);
model.BalanceSheet2018 = await _bscontext8.BalanceSheet2018
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);
model.BalanceSheet2017 = await _bscontext7.BalanceSheet2017
            .FirstOrDefaultAsync(m => m.Id.ToString() == Id);    

return View(model);