首页 > 解决方案 > 从 Dotnet Core 2.2 升级到 Dotnet 5。Partials 不再获取 View Data

问题描述

原始问题

我正在努力将 webapp 从 dotnet core 2.2 更新到 dotnet 5。大多数事情都运行良好,但我被困在部分视图上。

该网站使用大量 Ajax 请求,并且大多数返回带有一些 html 的小部分视图。partial 中的所有变量信息都是通过 viewdata 设置的。

更新到 dotnet 5 后,视图数据进入部分为空。

例如,我要返回部分“_mailbox”。在控制器中,您可以看到我在 viewdata 中有东西:

在此处输入图像描述

但是当我踏入局部时,您会看到它是空白的!在 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

我应该看到我的名字- 在此处输入图像描述

但它是空白的。在调试和单步执行时,我看到 viewdata 没有传递给视图。

其他信息

在此处输入图像描述

它是一个错误吗?

标签: c#asp.net-corerazorasp.net-2.0asp.net5

解决方案


据我所知,返回的 Partial 是 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;
    }   

结果:

在此处输入图像描述


推荐阅读