Исходная проблема
Я работаю над обновлением веб-приложения с dotnet core 2.2 до dotnet 5. Большинство вещей работает довольно хорошо, но я застрял на частичных представлениях.
Веб-сайт использует массу запросов Ajax, и большинство из них возвращает небольшой частичный вид с некоторым количеством html. Вся переменная информация в partial была установлена через viewdata.
После обновления до dotnet 5 данные представления входят в партиал как пустые.
Например, я возвращаю частичный _mailbox. В контроллере вы можете видеть, что у меня есть данные в представлении:
но когда я вхожу в частичное, вы видите, что оно пустое! В 2.2 это было пройдено.
Основная функция -
public ActionResult OnGetGetMailbox(int id)
{
ViewData["Fullname"] = "Christopher"
return Partial("_mailbox")
}
У вас есть идеи, что могло пойти не так? Я просто выполнил шаги, описанные в Майкрософт.
Как воспроизвести
Итак, я начал новый проект для тестирования и столкнулся с той же проблемой -
Добавить новый партиал html _test.cshtml
Добавить новую функцию в index.cshtml.cs
Затем при запуске веб-приложения https://localhost:44332/?Handler=test
Но он пустой. При отладке и прохождении я вижу, что данные просмотра не передаются в представление.
Дополнительная информация
Работает в Dotnet Core 2.2.105.
согласно docs тот же синтаксис, что и в 2.2, должен работать в 5.1. Однако, как указал @Brando Zhang, вам нужно использовать устаревший синтаксис из dotnet 2.1, чтобы это работало.
Если вы прочтете документацию по функции Partial для dotnet 5, она утверждает, что является частью пространства имен
Microsoft.AspNetCore.Mvc.RazorPages
, но если вы попытаетесь использовать это пространство имен, вы обнаружите, чтоPartial
не существует. см. документы