.NET 6项目中是否可以混用.cshtml文件与.razor文件?
问题解答
首先纠正认知偏差:.razor后缀的Razor组件并非只能用于Blazor Web应用,.NET 6及以上版本的ASP.NET Core Razor Pages、MVC项目都支持静态渲染Razor组件,你现在渲染失败是配置和写法的问题,不是技术栈不兼容。
两种可选解决方案
- 方案1:继续使用现有Razor组件做Footer
你需要先完成2个配置:- 在Program.cs中添加Razor组件服务注册:
builder.Services.AddRazorComponents();- 确认你写
@section Footer的文件是.cshtml后缀的Razor页面/布局文件,且component标签的语法没有转义错误,实际写法如下:
@section Footer { <component type="typeof(NewProject.Pages.Footer)" render-mode="Static" /> } - 方案2:替换为Razor Pages局部视图(更推荐)
你的Footer是全站通用的公共静态部件,没有复杂交互逻辑的前提下,用局部视图更适配Razor Pages技术栈,不需要额外注册服务,开发维护成本更低:- 在Shared文件夹下创建
_Footer.cshtml局部视图,写入你需要的Footer内容 - 在需要调用的位置直接用标签助手渲染即可:
@section Footer { <partial name="_Footer" /> } - 在Shared文件夹下创建
选型建议
你当前用的是Razor Pages纯服务端渲染模式,没有大量前端交互需求的前提下,公共部件优先选择局部视图即可;如果后续有高交互的业务模块,再引入Razor组件开发即可,不需要为了用组件而用组件。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

