Skip to content

Repository files navigation

使用方式

创建Template包

  • 项目根目录下运行dotnet pack
  • 安装./bin/Release下生成的nuget包
  • 运行dotnet new mtblazor -n projectName

可选参数

参数说明默认值
ExcludeDefaultService默认页面是否去除默认的服务实现(需要自己实现服务)false
ExcludeDefaultPages是否去除默认的页面false
UseClientProject是否使用.Client项目(依然保留.Client项目, 只是不再引用, 有需要可以引用)true
host主机类型,可选web/wpf/none,选择none时,保留web和wpf的入口项目none

定制说明

通过builder.AddServerProject(Action<ProjectSetting> setting)方法配置

  • setting.App设置Id、Name、Company等等, 目前除了显示页脚外没什么用处
  • setting.ConfigureSettingProviderType, 设置IProjectSettingService的实现, 提供了一些钩子, 例如登录成功、首先渲染后、路由跳转守卫等等
  • setting.AddInterceotor跟上面类似, 设置额外的钩子
  • setting.ConfigureAuthService设置IAuthService的实现, 用于登录登出等等
  • setting.ConfigurePage用于配置IPageLocatorService参考

Attribute菜单

使用PageGroupAttributePageInfoAttribute配置菜单

目前只支持配置2级菜单

客制化UI

场景: 路由地址固定, 组件UI不确定。建议搭配Project.Constraints.Page.SystemPageIndex<TPage>使用

例子1: 需要自定义登录页UI

默认的登录页UI是DefaultLogin

setting.ConfigurePage(locator =>{locator.SetLoginPageType<DefaultLogin>();});

重写CascadingSelf属性,将自身通过级联传递,重写GetPageType方法获取UI组件类型

[Route("/account/login")][Layout(typeof(BlankLayout))][ExcludeFromInteractiveRouting]publicclassLogin:SystemPageIndex<Login>,ILoginPage{protectedoverrideboolCascadingSelf=>true;publicTaskHandleLogin(LoginFormModelmodel){// ....// 登录逻辑}protectedoverrideType?GetPageType(IPageLocatorServicecustomSetting){returncustomSetting.GetLoginPageType();}}

登录页UI实现,通过级联参数获取ILoginPage实例,并调用上面的登录方法

@injectIOptionsMonitor<AppSetting> AppOptions
<PageTitle>登录</PageTitle><div class="login-container" style="background-image: url('/_content/Project.Web.Shared/assets/login_bg.png');background-size:cover;"><div class="title-container"><div class="title-position">
@*style="background-image: url('assets/logo.png')"*@
<h3 class="title">@AppOptions.CurrentValue.AppTitle</h3></div></div><div class="login-form">@LoginPage.UI.BuildLoginForm(LoginPage.HandleLogin)</div></div>@code{[CascadingParameter(Name="Login"),NotNull]public ILoginPage? LoginPage {get;set;}}

例子2: 需要自定义主页UI

setting.ConfigurePage(locator =>{locator.SetDashboardType<BlazorAdmin.Client.TestPages.TestDashboard>();});

权限控制

初始添加两个策略,第一个用于控制在线用户页面,第二个用于根据当前路由的页面检查是否拥有访问权限

services.AddAuthorizationCore(o =>{o.AddPolicy(AppConst.ONLINE_USER_POLICY, policy =>{policy.RequireUserName("admin");});o.AddPolicy(AppConst.DEFAULT_DYNAMIC_POLICY, policy =>{policy.AddRequirements(newDynamicPermissionRequirement());});});

master分支 web host

master.wpf分支 wpf host

更新日志

2026.08.01

  1. 重构模板项目,其他共享项目不再包含在模板内
  2. 升级到.NET 10.0框架(依赖LegacyBlazorJs兼容低版本浏览器)

2026.02.13

  • AntTable增加行内编辑功能
    1. ColumnDefinitionAttribute编辑列是否允许编辑(优先级最高)
    2. TableOptions.EnableRowEdit设置是否允许行编辑
    3. 重写ModelPageOnCellUpdateAsync或者OnRowUpdateAsync, 如果直接使用TableOptions, 就是设置TableOptions.OnCellUpdateAsync或者TableOptions.OnRowUpdateAsync

2026.02.11

  • ModelPage增加属性AdditionalHeaderButtons,用于默认UI下,添加额外的按钮
  • Camera组件新增属性ExactStartSwitchCamera方法新增参数exact,用于控制打开摄像头的约束级别,优先级低于StartSwitchCamera

About

No description, website, or topics provided.

Resources

Stars

27 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages