ASP.NET Core 5 MVC迁移后如何在页脚获取并展示版本号
ASP.NET Core 5 MVC 页脚版本号实现方案
ASP.NET Core 中已移除 WebViewPage 类,以下两种方案可以实现你原来的需求,按需选择即可:
方案1:视图注入(最简实现,仅需版本号优先选这个)
不需要修改视图基类,直接在布局页读取版本信息即可:
- 直接在
_Layout.cshtml顶部添加以下代码读取程序集版本:
@{ // 读取入口程序集的版本号 var appVersion = System.Reflection.Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "未知版本"; }
- 页脚位置直接输出即可:
<footer> <span>系统版本:@appVersion</span> </footer>
如果你的版本号存储在 appsettings.json 中,可按以下步骤实现:
- 在
appsettings.json中添加版本配置:
{ "AppConfig": { "Version": "1.3.5.0" } }
- 在
Startup.cs的ConfigureServices方法中注册配置:
services.Configure<AppConfig>(Configuration.GetSection("AppConfig"));
- 新增配置类
AppConfig:
public class AppConfig { public string Version { get; set; } }
- 在
_Layout.cshtml中注入配置并使用:
@inject Microsoft.Extensions.Options.IOptions<AppConfig> AppConfigOpts <footer> <span>系统版本:@AppConfigOpts.Value.Version</span> </footer>
方案2:自定义Razor视图基类(适配原有WebViewPage的用法,适合有大量公共属性迁移的场景)
如果原来的WebViewPage中还有其他公共属性需要迁移,你可以自定义Razor视图基类完全替代原来的实现:
- 新增自定义基类,继承
Microsoft.AspNetCore.Mvc.Razor.RazorPage<TModel>:
using System.Reflection; using Microsoft.AspNetCore.Mvc.Razor; public abstract class CustomRazorPage<TModel> : RazorPage<TModel> { // 公共版本号属性,和你原来WebViewPage中的定义一致 public string AppVersion { get; } = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "未知版本"; // 其他原来在WebViewPage中的公共属性、方法都可以在这里添加 }
- 在
/Views/_ViewImports.cshtml中全局注册自定义基类,替换默认基类:
@inherits CustomRazorPage<TModel>
- 直接在所有视图(包括
_Layout.cshtml)中使用@AppVersion即可,用法和你之前完全一致。
内容的提问来源于stack exchange,提问作者henkie
相关产品推荐
相关产品推荐

