Бритва PageHandler PartialViewResult Несоответствие типов моделей - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть PartialView с моделью типа Machine, которая отображает строку в таблице.

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

Это частичное представление работает нормально, когда отображается в цикле в родительском представлении, например так:

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

Я использую AJAX-запрос на клиенте для обновления некоторых данных и хочу также обновить соответствующую строку данных после этого.Так что мой 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 и нравитсятакже упоминается во втором исключении?Что мне здесь не хватает?

1 Ответ

0 голосов
/ 20 сентября 2019

Хорошо, дальнейшее расследование показало это:

Github Bugfix

Кажется, что это действительно ошибка в .netcore 2.2 и была исправлена ​​в .netcore 3.0 I 'Попробую версию RC и сообщу, если это было успешно.

Редактировать: После обновления целевой платформы до .netcore 3.0 код работает как положено и принимает предоставленную модель.

...