日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Blazor 版 Bootstrap Admin 通用后台权限管理框架

發(fā)布時(shí)間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Blazor 版 Bootstrap Admin 通用后台权限管理框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

上一篇介紹過(guò)了前后臺(tái)分離的 NET Core 通用權(quán)限管理系統(tǒng)?在這篇文章簡(jiǎn)要的介紹了 Bootstrap Admin 后臺(tái)管理框架的一些功能。本篇文章帶來(lái)的是微軟最新出的 Blazor 版本的 NET Core 通用權(quán)限管理系統(tǒng)

Blazor 簡(jiǎn)介

至于 Blazor 是什么,Blazor 的優(yōu)缺點(diǎn)小伙伴們可以自行在園子里搜索一下,相關(guān)介紹還是非常多的,我這里就不介紹 Blazor 是什么,有什么優(yōu)缺點(diǎn)了。我想闡述的是我個(gè)人對(duì) Blazor 技術(shù)的一些理解,Blazor 剛出來(lái)的時(shí)候國(guó)內(nèi)外無(wú)數(shù)文章報(bào)道,但是有一個(gè)顯著的特點(diǎn),所有的文章,代碼講解等都是圍繞微軟的那個(gè)例子講解的。換句話(huà)說(shuō),僅限于那個(gè)例子。離開(kāi)那個(gè)例子真的自己做個(gè)功能講解的一篇都沒(méi)有,微軟自己的文檔也非常不健全,很多技術(shù)細(xì)節(jié)都是一筆帶過(guò)。隨著時(shí)間的推移,微軟的文檔也豐富起來(lái)了。根據(jù)微軟的文檔 Blazor 本人用 Blazor 技術(shù)將 Bootstrap Admin 后臺(tái)管理框架重寫(xiě)了一版,通過(guò)自己編寫(xiě)組件系統(tǒng)的學(xué)習(xí)了一下 Blazor。通過(guò)自己的封裝實(shí)現(xiàn)了一個(gè)小小的框架,下面詳細(xì)的講解一下。

網(wǎng)頁(yè)布局設(shè)計(jì)

Bootstrap Admin 通用后臺(tái)管理框架布局采用 AdminLTE 的經(jīng)典布局
如圖所示,區(qū)域被劃分為四個(gè)區(qū)域,分別為:

  • 頭部 Header
    負(fù)責(zé)顯示網(wǎng)站 Logo、小掛件、當(dāng)前用戶(hù)信息

  • 側(cè)邊欄 Sidebar
    負(fù)責(zé)顯示后臺(tái)管理的菜單、提供導(dǎo)航功能

  • 正文顯示區(qū)域 Section
    負(fù)責(zé)顯示各個(gè)功能模塊的主題部分

  • 頁(yè)腳 Footer
    負(fù)責(zé)顯示系統(tǒng)信息

  • 顯示區(qū)域設(shè)計(jì)

    正文顯示區(qū)域在后臺(tái)管理框架中基本是字典表維護(hù)這種類(lèi)似的單表維護(hù),需要提供增、刪、改、查基本操作

    現(xiàn)在將顯示區(qū)域分割成三個(gè)部分

  • TabSet 區(qū)域
    用于顯示多 Tab

  • Query 區(qū)域
    用于顯示查詢(xún)條件

  • Table 區(qū)域
    用戶(hù)顯示符合過(guò)濾條件的數(shù)據(jù)結(jié)果集合,這里提供分頁(yè)、編輯、刪除等操作

  • 組件設(shè)計(jì)

    <EditPage Id="dict" TItem="Bootstrap.Security.BootstrapDict" QueryModel="QueryModel" OnQuery="Query" OnAdd="Add" OnDelete="Delete" OnSave="Save"><QueryBody><LgbInputText @bind-Value="@context.Category" maxlength="50" /><Select Items="QueryDefine" TItem="int" @bind-Value="@context.Define" /><LgbInputText @bind-Value="@context.Name" maxlength="50" /></QueryBody><TableHeader><LgbTableHeader TItem="string" @bind-Value="@context.Category"></LgbTableHeader><LgbTableHeader TItem="string" @bind-Value="@context.Name"></LgbTableHeader><LgbTableHeader TItem="string" @bind-Value="@context.Code"></LgbTableHeader><LgbTableHeader TItem="int" @bind-Value="@context.Define"></LgbTableHeader></TableHeader><RowTemplate><td>@context.Category</td><td>@context.Name</td><td>@context.Code</td><td>@(DefineItems.FirstOrDefault(d => d.Value == context.Define.ToString())?.Text ?? "-")</td></RowTemplate><EditTemplate><div class="row"><LgbInputText @bind-Value="@context.Category" placeholder="不可為空,50字以?xún)?nèi)" maxlength="50"><RequiredValidator /><StringLengthValidator Length="50" /></LgbInputText><Select Items="DefineItems" TItem="int" @bind-Value="@context.Define"></Select><LgbInputText @bind-Value="@context.Name" placeholder="不可為空,50字以?xún)?nèi)" maxlength="50"><RequiredValidator /><StringLengthValidator Length="50" /></LgbInputText><LgbInputText @bind-Value="@context.Code" placeholder="不可為空,2000字以?xún)?nèi)" maxlength="2000"><RequiredValidator /><StringLengthValidator Length="2000" /></LgbInputText></div></EditTemplate> </EditPage>

    QueryBody 模板

    本組件模板負(fù)責(zé)提供查詢(xún)過(guò)濾條件點(diǎn)擊查詢(xún)按鈕后數(shù)據(jù)顯示區(qū)域呈現(xiàn)符合過(guò)濾條件的數(shù)據(jù)記錄,本控件大量代碼均已封裝成通用,僅需提供過(guò)濾條件即可

    <LgbInputText @bind-Value="@context.Category" maxlength="50" /> <Select Items="QueryDefine" TItem="int" @bind-Value="@context.Define" /> <LgbInputText @bind-Value="@context.Name" maxlength="50" />

    通過(guò)設(shè)置?@bind-Value?lambda 表達(dá)式自動(dòng)生成一個(gè)?label?與 一個(gè)?input?控件,極大的提高了代碼編寫(xiě)速度

    TableHeader 模板

    本組件模板負(fù)責(zé)生成數(shù)據(jù)呈現(xiàn) Table 的表頭,通過(guò)?TItem?設(shè)置綁定字段屬性,通過(guò)設(shè)置?@bind-Value?lambda 表達(dá)式自動(dòng)生成漢字表頭

    <LgbTableHeader TItem="string" @bind-Value="@context.Category"></LgbTableHeader> <LgbTableHeader TItem="string" @bind-Value="@context.Name"></LgbTableHeader> <LgbTableHeader TItem="string" @bind-Value="@context.Code"></LgbTableHeader> <LgbTableHeader TItem="int" @bind-Value="@context.Define"></LgbTableHeader>

    RowTemplate 模板

    本組件負(fù)責(zé)呈現(xiàn)符合過(guò)濾條件的數(shù)據(jù)記錄,支持直接使用服務(wù)器端方法進(jìn)行數(shù)據(jù)格式化

    <td>@context.Category</td> <td>@context.Name</td> <td>@context.Code</td> <td>@(DefineItems.FirstOrDefault(d => d.Value == context.Define.ToString())?.Text ?? "-")</td>

    EditTemplate 模板

    本組件負(fù)責(zé)數(shù)據(jù)的編輯功能,通過(guò)設(shè)置?@bind-Value?表達(dá)式實(shí)現(xiàn)雙向綁定,直接調(diào)用服務(wù)器端保存方法即可

    <div class="row"><LgbInputText @bind-Value="@context.Category" placeholder="不可為空,50字以?xún)?nèi)" maxlength="50"><RequiredValidator /><StringLengthValidator Length="50" /></LgbInputText><Select Items="DefineItems" TItem="int" @bind-Value="@context.Define"></Select><LgbInputText @bind-Value="@context.Name" placeholder="不可為空,50字以?xún)?nèi)" maxlength="50"><RequiredValidator /><StringLengthValidator Length="50" /></LgbInputText><LgbInputText @bind-Value="@context.Code" placeholder="不可為空,2000字以?xún)?nèi)" maxlength="2000"><RequiredValidator /><StringLengthValidator Length="2000" /></LgbInputText> </div>

    通過(guò)簡(jiǎn)單的封裝,實(shí)現(xiàn)了僅需要提供數(shù)據(jù)屬性?@context.Name?即可,組件自動(dòng)會(huì)通過(guò)?[DisplayName]?標(biāo)簽或者通過(guò)系統(tǒng)服務(wù)的字典表中匹配到中文文字,非常的方便

    Blazor 多 Tab 版通用權(quán)限控制系統(tǒng)演示網(wǎng)站:ba.sdgxgz.com
    碼云開(kāi)源項(xiàng)目地址:Bootstrap Admin

    目前僅僅完成了 字典表維護(hù) 頁(yè)面的改版。其余頁(yè)面等等批量更改

    原文鏈接:https://www.cnblogs.com/argozhang/p/12022766.html


    .NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?

    總結(jié)

    以上是生活随笔為你收集整理的Blazor 版 Bootstrap Admin 通用后台权限管理框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。