首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

基础概念

在.NET Core 2.2及之前的版本中,Partial视图是一种将视图拆分为多个部分的方法,以便在多个视图中重用这些部分。然而,从.NET 5开始,Partial视图的行为发生了一些变化。

相关优势

  • 代码重用:通过使用Partial视图,可以避免在多个视图中重复相同的HTML代码。
  • 维护性:当需要更新某个共享的UI部分时,只需修改一个Partial视图,而不是多个视图。

类型

  • 同步Partial:传统的Partial视图,直接嵌入到父视图中。
  • 异步Partial:从.NET Core 3.0开始引入,允许异步加载Partial视图。

应用场景

  • 头部和尾部:网站的头部和尾部通常在多个页面中使用。
  • 侧边栏:侧边栏内容可以在多个页面中共享。
  • 表单部分:复杂的表单可以拆分为多个Partial视图。

问题描述

从.NET Core 2.2升级到.NET 5后,Partial视图不再获取视图数据。

原因

在.NET 5中,Partial视图的行为发生了变化。默认情况下,Partial视图不再自动传递父视图的模型数据。这是因为.NET 5引入了更严格的模型绑定和视图渲染机制,以提高安全性和性能。

解决方法

方法一:使用ViewComponent

ViewComponent是.NET Core中用于创建可重用视图组件的方式。它可以替代Partial视图,并且能够更好地处理模型数据。

代码语言:txt
复制
// 创建一个ViewComponent
public class MyViewComponent : ViewComponent
{
    public IViewComponentResult Invoke()
    {
        var model = new MyModel { /* 初始化模型数据 */ };
        return View("MyPartialView", model);
    }
}

在视图中调用ViewComponent

代码语言:txt
复制
@await Component.InvokeAsync("MyViewComponent")

方法二:手动传递模型数据

如果你仍然想使用Partial视图,可以手动传递模型数据。

代码语言:txt
复制
// 在父视图中
@await Html.PartialAsync("_MyPartialView", Model.MyPartialModel)

Partial视图中:

代码语言:txt
复制
@model MyNamespace.MyPartialModel

<!-- 使用模型数据 -->

方法三:使用RenderPartialAsync

你也可以使用RenderPartialAsync方法,并手动传递模型数据。

代码语言:txt
复制
// 在父视图中
@await Html.RenderPartialAsync("_MyPartialView", Model.MyPartialViewModel)

参考链接

通过以上方法,你可以解决从.NET Core 2.2升级到.NET 5后Partial视图不再获取视图数据的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 6 RazorPages 开发项目实战教程

如果您看过的之前的视频课程ASP.NET Core入门的,你会发现它是基于.NET Core 2.2的。而在我的书《深入浅出ASP.NET Core》中则使用的是.NET Core 3.1。...链接地址: https://github.com/dotnet/core/blob/main/roadmap.md .NET发布时间表 在大多数存储库中都可以使用里程碑信息,例如dotnet / runtime...关于长期计划的详细信息已于2019年5月6日在Introducing .NET 5博客文章中宣布。...答案是没有,比如我们可以通过对照微软的文档进行将.NET Core 2.2升级到.NET 5,如果中途有破坏式升级的内容。微软也会在文档中说明的很清晰。...中间件组件 HTTP请求处理管道 配置系统 标记助手(Taghelper) 布局文件 布局节点 路由 静态文件 视图导入 视图开始 模型绑定和验证 依赖注入 数据库迁移 日志记录

1.2K20
  • ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

    看了眼时间,11月也快要结束了,准备补上一篇如何将我们的 .NET Core 2.0 版本的程序升级到 .NET Core 2.1 版本,好歹也算多学了一点。   ...二、起因    .NET Core 2.1 发布于今年的5月30号,版本号我们可以看出这只是一个小版本的升级,微软官方发布的更新信息来看,对比于 .NET Core 2.0 版本,更多的是进行性能的优化...3、基于 ASP.NET Core 2.1 代码惯例的更改   在 .NET Core 升级到 2.1 版本后,ASP.NET Core 相应的也进行了一些更新,我们创建的模板中的一些基础代码也进行了修改...同样的,在 Startup.cs 文件中,ASP.NET Core 2.1 版本增加了对于 GDPR 的支持(欧盟的一项政策,当我们需要收集用户的数据时,必须以「简洁、透明且易懂的形式,清晰和平白的语言...四、总结    .NET Core 2.0 升级到 .NET Core 2.1的整个过程来看,项目整体改动不多,在发布项目时,我们可以发现,发布后的项目的大小缩小了很多,同时还提供了对于独立部署的支持

    1.2K20

    如何将.NET项目迁移到.NET Core

    (GDPR,即General Data Protection Regulation,《通用数据保护条例》) 在ASP.NET4.5和ASP.NET Core中共享cookies认证信息(加解密方式不一致问题...) .NET跨平台之旅:ASP.NET Core传统ASP.NET的Cookie中读取用户登录信息 地址:https://www.cnblogs.com/cmt/p/5940796.html 开源方案...2.0迁移System.Runtime.Caching 地址:https://www.cnblogs.com/mantgh/p/7429551.html .NET Core 2.0升级到3.0实战方案...地址:https://www.cnblogs.com/laozhang-is-phi/p/11520048.html .NET CORE2.2升级到3.0过程及遇到的一些问题 地址:https://.../ef-core-2.2 修改为 ASP.NET Core 风格的应用 按照上面的方式修改API兼容性后,框架类库可以顺利迁移到.NET Core,编译通过,代码运行也正常。

    1.8K40

    asp dotnet core 基于 TestServer 做集成测试

    我有一个古老的 dotnet core 3.1 的 asp dotnet core 项目,现在我准备将他升级到 dotnet 5 了。...但是我不想和博客园一样翻车,因此我需要做一点集成测试的辅助,尽管依然还是翻车了,但是我要学习博客园伟大的精神,将在这个项目里面所做的所有自动化测试项目的方法写下来 在开始 dotnet core 3.1...升级到 dotnet 5 之前,我先开始准备集成测试。.../CUnit 在准备好了集成测试项目之后,我就开始准备升级到 dotnet 5 了,然而此时发现构建服务器翻车了,如 刚刚我服务器回滚了 dotnet 5 的环境 博客的内容 终于我通过 如何给 CI...CD 服务器搭建上 .NET 5 构建和运行环境 的方法修好了 然而小伙伴告诉我 dotnet core 3.1 到 dotnet 5 有如下的更改 Breaking changes, version

    98010

    【BCVP】项目升级,无缝对接 .NET 5

    我的项目已经升级到5.x,在GitHub单独分支,不过没有修改什么代码,仅仅是升级了,但是这恰恰是证明了NETCore3.1是和NET5是无缝对接的,这也是我当时在升级3.1的时候,对2.2的小伙伴说的那句话....Net Core的未来版本ASP.NetCore运行的运行时(称.Net5)被指定为与Java,Objective C和Swift等其他语言具有更高的互操作性,使得过渡到.Net5很容易。...从上文看出来,有一个核心的就是和JAVA的互操作,这次是双向的哟,其他的一些更新你可以看看官网: https://docs.microsoft.com/zh-cn/dotnet/core/compatibility...点击更新,可能会提示2.2不再维护更新提示 因为我们知道,只有2.1和3.1才是LTS版本 然后点击“继续”,完成更新 中间可能会卸载的字样,不用理会,因为进度的前50%都是删除旧的,后50%会有新的下载并安装...然后开启SDK预览功能 接着安装.NET5的SDK 地址是: https://dotnet.microsoft.com/download/dotnet/5.0 可以看到,官方还单独看了一个页面,

    1K20

    Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page

    什么是Razor Page     我们都知道在Asp.Net MVC中,Razor是其一种视图引擎。...要创建Razor Page,你需要先安装.Net Core 2.0 SDK,如果要使用VS2017来创建,您还必须要更新到15.3版本以上 dotnet命令方式创建 打开cmd或者powershell工具...跟之前mvc不同的是,我们不再看到model,view,controller目录了,取而代之的是Pages目录,这个就是我们的razor Page的主要工作目录。...QuickStart Razor Page Hello Razor Page 通过上节我们创建了Razor Page项目,直接通过dotnet run或者在vs中F5运行。...那像原来我们在一个Controller中,有Get()和Get(id)表示获取列表和获取单个Item,那在Razor Page中如何运用呢?

    2K60

    win10 uwp 发布旁加载自动更新 总结

    虽然旁加载对于证书不是很友好,但是因为我的应用都是预装的,本来的两大问题一个就是自动更新问题,另一个是应用商店下载的问题,通过预装可以解决应用商店下载问题。...大概现在 UWP 程序已经编译完成,将编译的文件复制到 E:\package 文件夹,可以看到里面的文件有很多 asp dotnet core 不认识的文件,在 asp dotnet core 如果想要让用户下载某个文件...core 程序,就需要在 asp dotnet core 设置使用的 URL 和端口 使用下面的代码可以修改 asp dotnet core 监听端口 public static IWebHostBuilder...core 程序,然后告诉小伙伴你的本地的 ip 让在浏览器输入 我的小伙伴使用不清真的 Chrome 访问,但是他不能立刻点获取应用 ?...现在点击获取应用,等待安装,现在就可以看到下面界面 ?

    1.6K30

    深度探秘.NET 5.0

    微软.NET 5 Preview 1就开始在自己的网站上使用.NET 5 (Bing.com、dot.net已升级并运行了数个月),同时早期的.NET Core版本可以直接升级到.NET 5....接下来详细看一下C# 9 的一些语言新特性(F# 5用的比较少,不再做详细介绍): 1. Top-level programs 顶级程序 大家会问这是什么?...事件管道 事件管道是在.NET Core 2.2中添加的新子系统和API,可以在任何操作系统上执行性能和其他诊断调查。...现在有微软的背书,微软.NET Preview 1就开始在自己的网站上运行.NET 5, (Bing.com、dot.net已升级并运行了数个月),同时早期的.NET Core版本可以直接升级到.NET...也推荐大家逐步迁移升级到.NET 5.0. 参考链接: https://devblogs.microsoft.com/dotnet/announcing-net-5-0?

    99220

    【译】.NET 7 预览版 1 中的 ASP.NET Core 更新

    要安装最新的 .NET WebAssembly 构建工具,请提升的命令提示符处运行以下命令: dotnet workload install wasm-tools 升级现有项目 要将现有的 ASP.NET...Core 应用 .NET 6 升级到 .NET 7 Preview 1: 将您的应用程序的目标框架更新为 net7.0。...将请求正文绑定为 Stream 或 PipeReader 您现在可以将请求正文绑定为 Stream 或 PipeReader,以有效地支持用户必须摄取数据并将其存储到 blob 存储或将数据排队到队列提供程序...Razor 页面中的可为空模型 我们启用了定义一个可为空的页面或视图模型来改进在 ASP.NET Core 应用中使用空状态检查时的体验: @model Product?...模型属性名称通常是一个实现细节,这会使它们难以单页应用程序中处理。

    4K10

    使用Jenkins部署.Net Core遇到的几个坑

    一、相关环境和版本 服务器:windows2008【历史遗留服务器,建议升级到2012以上,2016支持Windows的容器化技术】 源代码管理:git .net core版本:net core 2.2...step5.构建的坑[该坑最耗时间,最后发现却是最简单] 1.请指定项目或解决方案文件。当前工作目录中未包含项目或解决方案文件。 ?...具体如何发布请跳转 新版本的发布需要增加License.txt,否则无法通过,配置如下:其中Licese是github上拷贝过来的。...你甚至dotnet restore和dotnet build都不用写,因为dotnet publish本身包含restore和build ?...参考文献: .NET Core Github到 Nuget 持续集成、部署 四、Jenkins常用插件 Green Balls 该插件让你的感官有了更好的提升,客官请看: ? ?

    2.4K40

    .NET Core 2.1 Preview 2发布 - April 10, 2018

    下面的图表提供了您可以.NET Core 2.0 以来所获得的改进的具体数字。 我们专注于大型项目。 ?...他们不再以这种方式交付。当您采用.NET Core 2.1时,您可以删除项目文件中DotNetCliToolReference的条目。 全局工具 .NET Core 现在有一个新部署和扩展机制。...当您升级到最新的SDK时,您将使用最新的.NET Core运行时版本进行发布。这适用于.NET Core 1.0运行时和更高版本。 自包含发布依赖于NuGet.org上的运行时版本。...公开可用的统计数据表明,大多数用户已经在使用dotnet回购,正如您通过以下泊坞扣拉取徽章所看到的那样: microsoft/dotnet -> ?....NET Core 2.1 Preview 1 的关键改进 有一些重要的改进对于.NET Core 2.1 Preview 1中重述很重要。

    83450

    壹开始前后端分离【 .NET Core2.03.0 +Vue2.0 】框架之十三 || DTOs 对象映射使用,项目部署Windows+Linux完整版

    BlogArticle>> getBlogs(); Task getBlogDetails(int id); } /// /// 获取视图博客详情信息...数据传输对象(DTO)(DataTransfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从而数据库中检索数据。...{ this.dal = dal; base.baseDal = dal; this.IMapper = IMapper; } /// /// 获取视图博客详情信息...4、安装AspNetCoreModule托管模块(已安装则跳过),   下载地址:点击我下载 5、应用池配置为无托管代码 (网上解释:ASP.NET Core不再是由IIS工作进程(w3wp.exe...,然后再cd Blog.Core 最后执行 dotnet run 即可 四、发布到Ubuntu 参考文章 @发布 ASP.NET Core 2.x 应用到 Ubuntu 1、安装.NET Core

    1.1K10
    领券