从 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
我应该看到我的名字-
但它是空白的。调试和单步执行时,我看到视图数据未传递到视图。
其他信息
它适用于 Dotnet Core 2.2.105。
根据 docs 与 2.2 相同的语法应该在 5.1 中工作。但是,正如@Brando Zhang 指出的那样,您必须使用 dotnet 2.1 中过时的语法才能完成这项工作。
如果您阅读了 dotnet 5 的 Partial 函数的文档,它声称是 Microsoft.AspNetCore.Mvc.RazorPages
命名空间的一部分,但是如果您尝试使用该命名空间,您会发现 Partial
不存在。 see docs
这是一个错误吗?
据我所知,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;
}
结果:
原题
我正在努力将 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
我应该看到我的名字-
但它是空白的。调试和单步执行时,我看到视图数据未传递到视图。
其他信息
它适用于 Dotnet Core 2.2.105。
根据 docs 与 2.2 相同的语法应该在 5.1 中工作。但是,正如@Brando Zhang 指出的那样,您必须使用 dotnet 2.1 中过时的语法才能完成这项工作。
如果您阅读了 dotnet 5 的 Partial 函数的文档,它声称是
Microsoft.AspNetCore.Mvc.RazorPages
命名空间的一部分,但是如果您尝试使用该命名空间,您会发现Partial
不存在。 see docs
这是一个错误吗?
据我所知,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;
}
结果: