BlazAdmin 是一個基於Blazui的後臺管理模板,無JS,無TS,非 Silverlight,非 WebForm,一個標籤便可使用。
我將在下一篇文章討論 Blazor 服務器端渲染與客戶端渲染的基本原理,對比服務器端渲染與 WebForm 的異同點
通過近一個月的開發,BlazAdmin 嚐鮮版終於搞定了,功能頗有限,同時也存在不少問題,只集成了一個後臺管理系統最基本的功能,包括:css
- 選項卡式頁面管理,無 Iframe
- 二級導航菜單
- Identity 用戶註冊與登陸,基於Cookies
須要注意的一點是咱們短期不會支持 IdentityServer4 以及Jwt,但會在接下來的計劃中支持 Session 註冊與登陸。下面是 BlazAdmin 的運行效果html
初次運行時會建立管理員git
主界面github
修改密碼web
登出數據庫
- .net core 3.1
- VS2019
@using BlazAdmin @using Blazui.Component.Container @using Blazui.Component.Button @using Blazui.Component.Dom @using Blazui.Component.Dynamic @using Blazui.Component.NavMenu @using Blazui.Component.Input @using Blazui.Component.Radio @using Blazui.Component.Select @using Blazui.Component.CheckBox @using Blazui.Component.Switch @using Blazui.Component.Table @using Blazui.Component.Popup @using Blazui.Component.Pagination @using Blazui.Component.Form @using Blazui.Component
<Router AppAssembly="@typeof(Program).Assembly"> <Found Context="routeData"> <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <LayoutView Layout="@typeof(MainLayout)"> <p>Sorry, there's nothing at this address.</p> </LayoutView> </NotFound> </Router>
public class DemoDbContext : IdentityDbContext { public DemoDbContext(DbContextOptions options) : base(options) { } }
缺乏什麼命名空間就直接 using,再也不贅述api
示例爲了方便因此用到了內存數據庫,須要安裝 nuget 包 Microsoft.EntityFrameworkCore.InMemory
須要 using 相關的命名空間服務器
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<DemoDbContext>(options => { options.UseInMemoryDatabase("demo"); }); services.AddBlazAdmin<DemoDbContext>(); services.AddSingleton<WeatherForecastService>(); }
app.UseAuthorization(); app.UseAuthentication();
注意須要加到 app.UseRouting() 方法之下
app
@page "/" @namespace BlazorApp4.Pages //此處 BlazorApp4 須要改爲你實際的命名空間,通常就是項目名 @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>BlazAdmin Demo</title> <base href="~/" /> <link href="/_content/BlazAdmin/css/admin.css" rel="stylesheet" /> <link rel="stylesheet" href="/_content/Blazui.Component/css/index.css" /> <link rel="stylesheet" href="/_content/Blazui.Component/css/fix.css" /> </head> <body> <app> @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered)) </app> <script src="/_content/Blazui.Component/js/dom.js"></script> <script src="_framework/blazor.server.js"></script> </body> </html>
@inherits LayoutComponentBase <BAdmin Menus="Menus" NavigationTitle="BlazAdmin Demo"></BAdmin> @code{ protected List<MenuModel> Menus { get; set; } = new List<MenuModel>(); protected override void OnInitialized() { Menus.Add(new MenuModel() { Label = "示例頁面", Icon = "el-icon-s-promotion", Children = new List<MenuModel>() { new MenuModel(){ Label="示例子頁面1", Icon = "el-icon-s-promotion", Route="/page1" }, new MenuModel(){ Label="示例子頁面2", Icon = "el-icon-s-promotion", Route="/page2" } } }); } }
示例 Demo 獲取請進QQ羣 74522853dom
- Blazui 組件庫:https://github.com/wzxinchen/Blazui
- BlazAdmin 核心組件庫:https://github.com/wzxinchen/BlazAdmin
- BlazAdmin 服務端渲染庫:https://github.com/wzxinchen/BlazAdmin.ServerRender