From 14ac39c61d009acc23eab3c1eb59d9346038f6df Mon Sep 17 00:00:00 2001 From: Argo Window10 Date: Tue, 26 Nov 2019 01:42:39 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E5=8A=A8=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=20NavigationManager=20=E4=B8=8E=20JSRuntime=20?= =?UTF-8?q?=E5=88=B0=E5=9F=BA=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AdminLayoutComponentBase.cs | 13 ++++----- .../Components/BootstrapComponentBase.cs | 7 +++-- .../Components/DefaultLayoutComponentBase.cs | 28 +++++++++---------- .../Bootstrap.Admin/Components/HeaderBase.cs | 7 ----- .../Bootstrap.Admin/Components/PageSetBase.cs | 8 ------ .../Bootstrap.Admin/Components/SectionBase.cs | 1 - .../Bootstrap.Admin/Components/SideBarBase.cs | 9 +----- .../Bootstrap.Admin/Components/TabSetBase.cs | 10 +------ src/admin/Bootstrap.Admin/Pages/Index.razor | 21 +++++++------- .../Bootstrap.Admin/Shared/AdminLayout.razor | 2 +- .../Shared/DefaultLayout.razor | 4 +-- src/admin/Bootstrap.Admin/Shared/Footer.razor | 4 +-- src/admin/Bootstrap.Admin/Shared/Header.razor | 2 +- .../Bootstrap.Admin/Shared/SideBar.razor | 19 ++++++------- 14 files changed, 50 insertions(+), 85 deletions(-) diff --git a/src/admin/Bootstrap.Admin/Components/AdminLayoutComponentBase.cs b/src/admin/Bootstrap.Admin/Components/AdminLayoutComponentBase.cs index 6714e546..378c43b0 100644 --- a/src/admin/Bootstrap.Admin/Components/AdminLayoutComponentBase.cs +++ b/src/admin/Bootstrap.Admin/Components/AdminLayoutComponentBase.cs @@ -27,7 +27,7 @@ namespace Bootstrap.Admin.Components /// /// [CascadingParameter(Name = "Default")] - public DefaultLayout Layout { get; protected set; } = new DefaultLayout(); + public DefaultLayout RootLayout { get; protected set; } = new DefaultLayout(); /// /// @@ -60,7 +60,7 @@ namespace Bootstrap.Admin.Components { if (TabSet != null) { - if (TabSet.TabCount == 1) Layout.NavigationManager?.NavigateTo(Layout.HomeUrl); + if (TabSet.TabCount == 1) RootLayout.NavigationManager?.NavigateTo(RootLayout.HomeUrl); else { var pageId = await TabSet.CloseTab(tabId); @@ -74,16 +74,15 @@ namespace Bootstrap.Admin.Components /// /// /// - protected override Task OnAfterRenderAsync(bool firstRender) + protected override void OnAfterRender(bool firstRender) { - if (firstRender) Layout.JSRuntime.EnableAnimation(); + if (firstRender) RootLayout.JSRuntime.EnableAnimation(); - var requestUrl = Layout.NavigationManager?.Uri ?? ""; + var requestUrl = RootLayout.NavigationManager?.Uri ?? ""; var path = new Uri(requestUrl).PathAndQuery; - var menus = DataAccess.MenuHelper.RetrieveAllMenus(Layout.UserName); + var menus = DataAccess.MenuHelper.RetrieveAllMenus(RootLayout.UserName); var menu = menus.FirstOrDefault(menu => path.Contains(menu.Url.ToBlazorMenuUrl())); AddTab(menu); - return base.OnAfterRenderAsync(firstRender); } } } diff --git a/src/admin/Bootstrap.Admin/Components/BootstrapComponentBase.cs b/src/admin/Bootstrap.Admin/Components/BootstrapComponentBase.cs index 7ccd4daa..9d40da16 100644 --- a/src/admin/Bootstrap.Admin/Components/BootstrapComponentBase.cs +++ b/src/admin/Bootstrap.Admin/Components/BootstrapComponentBase.cs @@ -1,5 +1,6 @@ using Bootstrap.Admin.Shared; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; namespace Bootstrap.Admin.Components { @@ -17,13 +18,13 @@ namespace Bootstrap.Admin.Components /// /// /// - [CascadingParameter(Name = "Default")] - protected DefaultLayout RootLayout { get; set; } = new DefaultLayout(); + [Inject] + public NavigationManager? NavigationManager { get; set; } /// /// /// [Inject] - public NavigationManager? NavigationManager { get; set; } + protected IJSRuntime? JSRuntime { get; set; } } } diff --git a/src/admin/Bootstrap.Admin/Components/DefaultLayoutComponentBase.cs b/src/admin/Bootstrap.Admin/Components/DefaultLayoutComponentBase.cs index f7e71c5f..d4bd92b9 100644 --- a/src/admin/Bootstrap.Admin/Components/DefaultLayoutComponentBase.cs +++ b/src/admin/Bootstrap.Admin/Components/DefaultLayoutComponentBase.cs @@ -2,6 +2,7 @@ using Bootstrap.Admin.Shared; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Server; using Microsoft.JSInterop; using System; using System.Net; @@ -18,7 +19,7 @@ namespace Bootstrap.Admin.Components /// /// [Inject] - public AuthenticationStateProvider? AuthenticationStateProvider { get; set; } + public AuthenticationStateProvider AuthenticationStateProvider { get; set; } = new ServerAuthenticationStateProvider(); /// /// @@ -35,7 +36,7 @@ namespace Bootstrap.Admin.Components /// /// /// - public NavigatorBarModel? Model { get; set; } + public NavigatorBarModel Model { get; set; } = new NavigatorBarModel(""); /// /// @@ -73,20 +74,17 @@ namespace Bootstrap.Admin.Components /// protected override async Task OnInitializedAsync() { - if (AuthenticationStateProvider != null) + var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); + if (!state.User.Identity.IsAuthenticated) { - var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - if (!state.User.Identity.IsAuthenticated) - { - NavigationManager?.NavigateTo("/Account/Login?returnUrl=" + WebUtility.UrlEncode(new Uri(NavigationManager.Uri).PathAndQuery)); - } - else - { - Model = new NavigatorBarModel(state.User.Identity.Name); - IsAdmin = state.User.IsInRole("Administrators"); - UserName = state.User.Identity.Name ?? ""; - DisplayName = Model.DisplayName; - } + NavigationManager?.NavigateTo("/Account/Login?returnUrl=" + WebUtility.UrlEncode(new Uri(NavigationManager.Uri).PathAndQuery)); + } + else + { + Model = new NavigatorBarModel(state.User.Identity.Name); + IsAdmin = state.User.IsInRole("Administrators"); + UserName = state.User.Identity.Name ?? ""; + DisplayName = Model.DisplayName; } } } diff --git a/src/admin/Bootstrap.Admin/Components/HeaderBase.cs b/src/admin/Bootstrap.Admin/Components/HeaderBase.cs index 54c1d2bc..35862332 100644 --- a/src/admin/Bootstrap.Admin/Components/HeaderBase.cs +++ b/src/admin/Bootstrap.Admin/Components/HeaderBase.cs @@ -1,5 +1,4 @@ using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; namespace Bootstrap.Admin.Components { @@ -44,12 +43,6 @@ namespace Bootstrap.Admin.Components [Parameter] public string Icon { get; set; } = ""; - /// - /// - /// - [Inject] - protected IJSRuntime? JSRuntime { get; set; } - /// /// 更新登录用户显示名称方法 /// diff --git a/src/admin/Bootstrap.Admin/Components/PageSetBase.cs b/src/admin/Bootstrap.Admin/Components/PageSetBase.cs index 3643479c..fadd675d 100644 --- a/src/admin/Bootstrap.Admin/Components/PageSetBase.cs +++ b/src/admin/Bootstrap.Admin/Components/PageSetBase.cs @@ -1,7 +1,5 @@ using Bootstrap.Admin.Extensions; using Bootstrap.Security; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; using System.Collections.Generic; using System.Linq; @@ -18,12 +16,6 @@ namespace Bootstrap.Admin.Components protected List Pages { get; set; } = new List(); private string? curId = ""; - /// - /// - /// - [Inject] - protected IJSRuntime? JSRuntime { get; set; } - /// /// /// diff --git a/src/admin/Bootstrap.Admin/Components/SectionBase.cs b/src/admin/Bootstrap.Admin/Components/SectionBase.cs index c72a87e4..33fe5847 100644 --- a/src/admin/Bootstrap.Admin/Components/SectionBase.cs +++ b/src/admin/Bootstrap.Admin/Components/SectionBase.cs @@ -30,6 +30,5 @@ namespace Bootstrap.Admin.Components /// [Parameter] public RenderFragment? ChildContent { get; set; } - } } diff --git a/src/admin/Bootstrap.Admin/Components/SideBarBase.cs b/src/admin/Bootstrap.Admin/Components/SideBarBase.cs index 09d57742..7355e488 100644 --- a/src/admin/Bootstrap.Admin/Components/SideBarBase.cs +++ b/src/admin/Bootstrap.Admin/Components/SideBarBase.cs @@ -1,6 +1,5 @@ using Bootstrap.Admin.Models; using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; namespace Bootstrap.Admin.Components { @@ -9,16 +8,10 @@ namespace Bootstrap.Admin.Components /// public class SideBarBase : BootstrapComponentBase { - /// - /// - /// - [Inject] - protected IJSRuntime? JSRuntime { get; set; } - /// /// /// [Parameter] - public NavigatorBarModel? Model { get; set; } + public NavigatorBarModel Model { get; set; } = new NavigatorBarModel(""); } } diff --git a/src/admin/Bootstrap.Admin/Components/TabSetBase.cs b/src/admin/Bootstrap.Admin/Components/TabSetBase.cs index 35828739..043eb66f 100644 --- a/src/admin/Bootstrap.Admin/Components/TabSetBase.cs +++ b/src/admin/Bootstrap.Admin/Components/TabSetBase.cs @@ -1,8 +1,6 @@ using Bootstrap.Admin.Extensions; using Bootstrap.Admin.Shared; using Bootstrap.Security; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -14,12 +12,6 @@ namespace Bootstrap.Admin.Components /// public class TabSetBase : BootstrapComponentBase { - /// - /// - /// - [Inject] - protected IJSRuntime? JSRuntime { get; set; } - /// /// /// @@ -91,7 +83,7 @@ namespace Bootstrap.Admin.Components /// protected void CloseAllTab() { - NavigationManager?.NavigateTo(RootLayout?.HomeUrl); + NavigationManager?.NavigateTo(Layout.RootLayout.HomeUrl); } /// diff --git a/src/admin/Bootstrap.Admin/Pages/Index.razor b/src/admin/Bootstrap.Admin/Pages/Index.razor index 7d5cec96..a5ee51cb 100644 --- a/src/admin/Bootstrap.Admin/Pages/Index.razor +++ b/src/admin/Bootstrap.Admin/Pages/Index.razor @@ -3,22 +3,23 @@ @page "/Pages/Admin/Index" @layout DefaultLayout @attribute [Authorize] +@inject IJSRuntime JSRuntime -
+

欢迎使用后台管理

@code { - protected string? ShowCardTitle { get; set; } = ""; + [CascadingParameter(Name = "Default")] + protected DefaultLayout Layout { get; set; } = new DefaultLayout(); - protected int LockScreenPeriod { get; set; } = 30; - - [CascadingParameter] - protected DefaultLayout? Layout { get; set; } - - protected override void OnInitialized() + /// + /// + /// + protected override void OnAfterRender(bool firstRender) { - ShowCardTitle = Layout?.Model?.ShowCardTitle; - LockScreenPeriod = Layout?.Model?.LockScreenPeriod ?? 30; + var menus = DataAccess.MenuHelper.RetrieveAllMenus(Layout.UserName); + var menu = menus.FirstOrDefault(menu => "/Pages/Admin/Index".Contains(menu.Url.ToBlazorMenuUrl(), StringComparison.OrdinalIgnoreCase)); + JSRuntime.ActiveMenu(menu.Id); } } diff --git a/src/admin/Bootstrap.Admin/Shared/AdminLayout.razor b/src/admin/Bootstrap.Admin/Shared/AdminLayout.razor index 27370393..6f41a384 100644 --- a/src/admin/Bootstrap.Admin/Shared/AdminLayout.razor +++ b/src/admin/Bootstrap.Admin/Shared/AdminLayout.razor @@ -2,7 +2,7 @@ @layout DefaultLayout -
+
diff --git a/src/admin/Bootstrap.Admin/Shared/DefaultLayout.razor b/src/admin/Bootstrap.Admin/Shared/DefaultLayout.razor index 172ea6fd..0b62ac6e 100644 --- a/src/admin/Bootstrap.Admin/Shared/DefaultLayout.razor +++ b/src/admin/Bootstrap.Admin/Shared/DefaultLayout.razor @@ -1,8 +1,8 @@ @inherits DefaultLayoutComponentBase -
+
@Body -
+
diff --git a/src/admin/Bootstrap.Admin/Shared/Footer.razor b/src/admin/Bootstrap.Admin/Shared/Footer.razor index f591664b..88442b3e 100644 --- a/src/admin/Bootstrap.Admin/Shared/Footer.razor +++ b/src/admin/Bootstrap.Admin/Shared/Footer.razor @@ -1,7 +1,7 @@