从 Dotnet Core 2.2 升级到 Dotnet 5。Partials 不再获取查看数据

Upgraded from Dotnet Core 2.2 to Dotnet 5. Partials no longer get View Data

原题

我正在努力将 Web 应用程序从 dotnet core 2.2 更新到 dotnet 5。大多数情况下都运行良好,但我仍然停留在部分视图上。

该网站使用了大量 Ajax 请求,大多数 return 是一个小的局部视图,还有一些 html。 partial中所有的变量信息都是通过viewdata设置的

更新到 dotnet 5 后,viewdata 进入部分为空。

例如,我正在 return 部分“_mailbox”。在控制器中你可以看到我在视图数据中有东西:

但是当我进入局部时你会看到它是空白的!在2.2中通过了。

基本功能-

public ActionResult OnGetGetMailbox(int id)
{
  ViewData["Fullname"] = "Christopher"
  return Partial("_mailbox")
}

您知道哪里出了问题吗?我基本上只是按照 Microsoft.

概述的步骤操作

如何复制

所以我开始了一个全新的项目来测试并遇到了同样的问题-

添加新的 html 部分 _test.cshtml

index.cshtml.cs

中添加新功能

然后当 运行 webapp https://localhost:44332/?Handler=test

我应该看到我的名字-

但它是空白的。调试和单步执行时,我看到视图数据未传递到视图。

其他信息

这是一个错误吗?

据我所知,returnPartial是MVC函数的结果,不是razor pages,如果你想使用razor page的Partial结果,你应该自己构建。

更多详情,您可以参考以下代码:

    public IActionResult OnGetTest()
    {

        ViewData["Test"] = "test";
        var partialView = "_test";


        var partialViewResult = new PartialViewResult()
        {
            ViewName = partialView,
            ViewData = ViewData
        };
        return partialViewResult;
    }   

结果: