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 文件中定义的那样,并且在第二个异常中也提到了它?我在这里错过了什么?
好的,进一步调查显示:
似乎这确实是 .netcore 2.2 中的一个 Bug,并已在 .netcore 3.0 中修复
我会尝试 RC 版本,如果成功,我会报告。
编辑:将目标框架更新为 .netcore 3.0 后,代码按预期工作并接受提供的模型。
我有一个带有 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 文件中定义的那样,并且在第二个异常中也提到了它?我在这里错过了什么?
好的,进一步调查显示:
似乎这确实是 .netcore 2.2 中的一个 Bug,并已在 .netcore 3.0 中修复 我会尝试 RC 版本,如果成功,我会报告。
编辑:将目标框架更新为 .netcore 3.0 后,代码按预期工作并接受提供的模型。