如何在MudBlazor布局中访问AppInfo以显示应用信息及版本?
解决Blazor布局中显示应用信息及构建版本的问题
错误原因分析
你之前使用@app.utilities的语法是错误的,Blazor中不存在这种引用方式:
- 引用命名空间需要用
@using指令,且可添加多个(每个单独一行,不会报“仅可使用一个命名空间”错误) - 访问服务类需要用
@inject进行依赖注入,而非自定义的@app前缀
具体解决方案
方案1:通过依赖注入访问AppInfo(推荐,适合动态获取信息)
创建AppInfo服务类
在项目中新建一个类(比如放在Utilities目录下):namespace YourAppName.Utilities; public class AppInfo { // 应用名称 public string AppName { get; set; } = "我的Blazor应用"; // 构建版本,可从程序集自动获取 public string BuildVersion => typeof(AppInfo).Assembly.GetName().Version?.ToString() ?? "未知版本"; }注册服务
在Program.cs中将AppInfo注册为单例服务:builder.Services.AddSingleton<AppInfo>();在布局中注入并使用
在你的布局组件(比如MainLayout.razor)顶部添加注入指令,然后在页面中调用:@inject YourAppName.Utilities.AppInfo AppInfo <!DOCTYPE html> <html lang="zh-CN"> <head> <!-- 原有head内容 --> </head> <body> <!-- 在lang标签下方添加应用信息 --> <div class="app-info"> <p>应用名称:@AppInfo.AppName | 构建版本:@AppInfo.BuildVersion</p> </div> <!-- 原有页面内容 --> <div class="page"> <div class="sidebar"> <NavMenu /> </div> <main> <!-- ... --> </main> </div> </body> </html>
方案2:使用静态类(适合固定或静态获取的信息)
如果应用信息是固定的,也可以用静态类直接访问:
创建静态AppInfo类
namespace YourAppName.Utilities; public static class AppInfo { public static string AppName => "我的Blazor应用"; public static string BuildVersion => typeof(AppInfo).Assembly.GetName().Version?.ToString() ?? "未知版本"; }在布局中引用并使用
在布局顶部添加命名空间引用,直接调用静态属性:@using YourAppName.Utilities <!DOCTYPE html> <html lang="zh-CN"> <head> <!-- 原有head内容 --> </head> <body> <div class="app-info"> <p>应用名称:@AppInfo.AppName | 构建版本:@AppInfo.BuildVersion</p> </div> <!-- 原有页面内容 --> </body> </html>
注意事项
- 确保
YourAppName替换为你实际的项目命名空间 - 如果需要从配置文件读取应用名称,可在
AppInfo构造函数中注入IConfiguration来获取
内容的提问来源于stack exchange,提问作者Shian JA
相关产品推荐
相关产品推荐

