Razor PageHandler PartialViewResult 模型类型不匹配

Razor PageHandler PartialViewResult Model Type mismatch

我有一个带有 Machine 类型模型的 PartialView,它在 table 中呈现一行。

@model GPT.Core.Models.Machine
<tr>
  @* 
    some html 
  *@
</tr>

当在父视图中循环呈现时,此局部视图工作正常:

@foreach (var machine in pl.Machines)
{
  // some code
  // ...
  await Html.RenderPartialAsync("_MachineTableRow", machine);
}

我在客户端上使用 AJAX-Request 来更新一些数据,并想在之后更新相应的数据行。 所以我的 AJAX-请求调用

public async Task<PartialViewResult> OnPostAnalyzeMachineJournalAsync()
{
    // some code
    // ...
    var machine = GetUpdateMachinePseudoMethod();
    return Partial("_MachineTableRow", machine);
}

但这会引发异常:

System.InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'GPT.Core.Models.Machine', but this ViewDataDictionary instance requires a model item of type 'GPT.Web.Pages.IndexModel'.

我不确定 ViewDataDictionary 这个异常指的是哪个。但即使它对我来说没有意义并且只是出于好奇,我提供了异常提到的 IndexModel

await Html.RenderPartialAsync("_MachineTableRow", this);

然后有另一个异常反过来告诉我完全相同的事情,这让我现在完全糊涂了:

System.InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'GPT.Web.Pages.IndexModel', but this ViewDataDictionary instance requires a model item of type 'GPT.Core.Models.Machine'.

谁能告诉我为什么当我传递一个 Machine 实例时它不起作用,就像它在部分 cshtml 文件中定义的那样,并且在第二个异常中也提到了它?我在这里错过了什么?

好的,进一步调查显示:

Github Bugfix

似乎这确实是 .netcore 2.2 中的一个 Bug,并已在 .netcore 3.0 中修复 我会尝试 RC 版本,如果成功,我会报告。

编辑:将目标框架更新为 .netcore 3.0 后,代码按预期工作并接受提供的模型。