久久精品五福影院1421_亚洲看片免费_www国产亚洲精品久久麻豆_影音先锋中文字幕资源

您的位置:首頁>新聞 > 業(yè)界 >

天天快看點(diǎn)丨小試Blazor——實(shí)現(xiàn)Ant Design Blazor動(dòng)態(tài)表單

2023-06-25 08:03:29    來源:博客園

前言

最近想了解下Blazor,于是嘗試使用Blazor寫一個(gè)簡單的低代碼框架,于是就采用了Ant Design Blazor作為組件庫

低代碼框架在表現(xiàn)層的第一步則是動(dòng)態(tài)表單,需要將設(shè)計(jì)時(shí)的結(jié)構(gòu)渲染成運(yùn)行時(shí)的表單,本次主要實(shí)現(xiàn)動(dòng)態(tài)表單,相關(guān)數(shù)據(jù)接口都以返回固定數(shù)據(jù)的形式實(shí)現(xiàn)


(資料圖)

實(shí)現(xiàn)

1.項(xiàng)目準(zhǔn)備

先通過命令創(chuàng)建一個(gè)Ant Design Blazor項(xiàng)目,并加入到空的解決方案當(dāng)中:

dotnet new antdesign -o LowCode.Web -ho server

由于我們需要寫一些API接口,所以在Startup類中加入控制器相關(guān)的代碼:

public void ConfigureServices(IServiceCollection services)        {            services.AddRazorPages();            services.AddControllers();//添加控制器            services.AddEndpointsApiExplorer();            services.AddServerSideBlazor();            services.AddAntDesign();            services.AddScoped(sp => new HttpClient            {                BaseAddress = new Uri(sp.GetService().BaseUri)            });            services.Configure(Configuration.GetSection("ProSettings"));        }        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }            else            {                app.UseExceptionHandler("/Error");                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.                app.UseHsts();            }            app.UseHttpsRedirection();            app.UseStaticFiles();                        app.UseRouting();                        app.UseEndpoints(endpoints =>            {                endpoints.MapBlazorHub();                endpoints.MapFallbackToPage("/_Host");                endpoints.MapControllers();//配置控制器            });        }

2.菜單接口

在項(xiàng)目中新增Services文件夾,添加MenuServices類并填入固定數(shù)據(jù),并在Startup類中注冊:

public class MenuService    {        ///         /// 獲取左側(cè)導(dǎo)航數(shù)據(jù)        ///         ///         public virtual MenuDataItem[] GetMenuData()        {            return new MenuDataItem[]            {                new MenuDataItem                {                    Path="/",                    Name="測試模塊",                    Key="Test",                    Icon="smile",                    Children=new MenuDataItem[]                    {                        new MenuDataItem                        {                            Path="/StdForm",                            Name="動(dòng)態(tài)表單",                            Key="Form",                            Icon="plus-square"                        }                    }                }            };        }    }

修改BaseicLayout.razor中@code部分,將_menuData改為從MenuService中獲取:

private MenuDataItem[] _menuData ;    [Inject] public MenuService MenuService { get; set; }    protected override async Task OnInitializedAsync()    {        await base.OnInitializedAsync();        _menuData = MenuService.GetMenuData();    }

3.表單組件接口

創(chuàng)建一個(gè)簡單的表單與組件的Model:

錄入控件Input:

public class Input     {        public string Name { get; set; }        public string Value { get; set; }    }

標(biāo)準(zhǔn)表單StandardFormModel:

public class StandardFormModel    {        public StandardFormModel()        {            ArrayInput = new List();        }        public List ArrayInput { get; set; }    }

表單API接口FormController:

[Route("api/[controller]/[action]")]    [ApiController]    public class FormController : ControllerBase    {        [HttpGet]        public StandardFormModel GetFormStruc()        {            var result = new StandardFormModel();            result.ArrayInput.AddRange(new List(){                new Input()                {                    Name="賬號(hào)"                },                new Input()                {                    Name="密碼"                }            });            return result;        }    }

4.動(dòng)態(tài)表單頁面

在Pages文件夾下創(chuàng)建一個(gè)StdForm.razor和StdForm.razor.cs文件

StdForm.razor.cs(注意partial):

public partial class StdForm    {        public StandardFormModel StandardFormModel { get; set; }        public Form StdFormModel { get; set; }        [Inject]        public HttpClient HttpClient { get; set; }             public void Init()        {            var formStruc = HttpClient.GetFromJsonAsync("api/Form/GetFormStruc").Result;            StandardFormModel= formStruc;        }        protected override async Task OnInitializedAsync()        {            Init();            await base.OnInitializedAsync();                    }    }

StdForm.razor:

@page "/StdForm"
@foreach (var item in StandardFormModel.ArrayInput) { @if (item is Model.Component.Input) { } }

運(yùn)行效果

總結(jié)

在Blazor項(xiàng)目中要訪問API接口則需要注入HttpClient類,使用HttpClient請求API接口即可,也可以直接注入Services調(diào)用。

目前僅僅是驗(yàn)證了動(dòng)態(tài)表單的可能性,其他的組件渲染可以根據(jù)Ant Design Blazor官方文檔定義模型結(jié)構(gòu)實(shí)現(xiàn)

參考文檔:

Blazor官方文檔

Ant Design Blazor官方文檔

Ant Design Blazor倉庫

關(guān)鍵詞:

相關(guān)閱讀

久久精品五福影院1421_亚洲看片免费_www国产亚洲精品久久麻豆_影音先锋中文字幕资源
www.亚洲天堂网| www.99在线| 免费黄频在线观看| 久久综合亚洲精品| 天堂网在线免费观看| 福利视频免费在线观看| 高清一区在线观看| 国产精品333| www.69av| 青青草原播放器| 国产aaaaa毛片| 男女午夜激情视频| 韩国无码av片在线观看网站| 午夜免费看毛片| 成人性做爰aaa片免费看不忠| 久久99国产精品一区| 国产资源中文字幕| 五月天丁香花婷婷| 一级一片免费播放| 中文字幕剧情在线观看| 在线免费黄色网| 国产美女视频免费看| 在线观看亚洲色图| 九一精品久久久| 亚洲一级片av| 中文字幕免费高| 欧美极品少妇无套实战| 成人短视频在线观看免费| 欧美在线观看视频免费| 无码 制服 丝袜 国产 另类| 日韩精品 欧美| 农村妇女精品一二区| 熟女人妇 成熟妇女系列视频| 成熟了的熟妇毛茸茸| 粉嫩虎白女毛片人体| 91网址在线观看精品| 国产小视频免费| 免费黄色日本网站| 日本中文字幕观看| 天堂8在线天堂资源bt| 亚洲欧洲日产国码无码久久99| 日韩欧美xxxx| 咪咪色在线视频| 日韩小视频在线播放| 色综合手机在线| 日韩精品久久一区二区| 成年人免费大片| 黄色污污在线观看| 国产精品秘入口18禁麻豆免会员| 三级a在线观看| 老司机激情视频| 日本人视频jizz页码69| 丁香婷婷综合激情| 亚洲精品久久久久久宅男| 欧美性潮喷xxxxx免费视频看| 欧美日韩亚洲一二三| 免费日韩在线观看| 九热视频在线观看| 青草青青在线视频| 女同激情久久av久久| 男人的天堂99| 欧美做暖暖视频| 日韩精品视频网址| 另类小说第一页| 中国丰满人妻videoshd| 米仓穗香在线观看| 在线观看国产福利| 久久久免费视频网站| 国产美女作爱全过程免费视频| 91香蕉视频污版| 国产69精品久久久久999小说| 91精产国品一二三产区别沈先生| 999精品网站| 久久久久久久久久久免费视频| 四虎影院一区二区| 天天综合网日韩| 成年人观看网站| 日韩一级免费看| 91视频成人免费| 色哺乳xxxxhd奶水米仓惠香| 日韩av一卡二卡三卡| 日韩手机在线观看视频| 欧美激情国产精品日韩| 97视频久久久| 日韩网站在线免费观看| 91亚洲精品国产| 美脚丝袜脚交一区二区| 国产精品久久久影院| 熟女视频一区二区三区| 黄色免费高清视频| 欧美日韩午夜爽爽| 日本香蕉视频在线观看| 国产视频九色蝌蚪| 中文字幕无码不卡免费视频| 国产又大又黄又粗的视频| 可以免费观看av毛片| 成年人视频在线免费| 亚洲爆乳无码专区| 想看黄色一级片| 777久久精品一区二区三区无码| 午夜免费视频网站| 国产一线二线三线女| 成人在线观看你懂的| 日本成人在线免费视频| 伊人国产在线视频| 99999精品| 日本免费黄视频| 激情图片中文字幕| 日韩精品 欧美| 天天干天天爽天天射| 久久免费一级片| 毛片av免费在线观看| 女同激情久久av久久| 国产毛片久久久久久国产毛片| 美女av免费在线观看| 又色又爽又黄视频| 国产又粗又猛又爽又黄的网站| 欧美牲交a欧美牲交| 日韩在线一区视频| 毛片av在线播放| 青青青在线视频免费观看| aaa免费在线观看| 无码内射中文字幕岛国片| 欧美专区第二页| 91香蕉视频导航| 亚洲欧洲日产国码无码久久99| 爱爱爱视频网站| 欧美成人三级在线播放| 野外做受又硬又粗又大视频√| 久热精品在线观看视频| 99视频在线免费播放| 欧美性受黑人性爽| 丰满少妇在线观看| 鲁一鲁一鲁一鲁一澡| 国产一区二区三区小说| 中文字幕免费高| 看看黄色一级片| 九九热在线免费| 国产精品人人妻人人爽人人牛| 国产乱淫av片杨贵妃| 男人天堂新网址| 国产精品igao激情视频| 国产盗摄视频在线观看| 999热精品视频| 天堂网成人在线| 亚洲精品乱码久久久久久动漫| 国产精品99久久免费黑人人妻| 精品中文字幕av| 精品这里只有精品| 精品人妻少妇一区二区| 麻豆一区二区三区在线观看| 国产福利片一区二区| 手机免费av片| 手机在线观看日韩av| 亚洲精品国产久| 18视频在线观看娇喘| 欧美少妇在线观看| 国产一二三区在线播放| 日韩视频在线视频| 欧美污视频网站| 中文字幕国产免费| 久久久福利影院| 国产精品自拍合集| 69堂免费视频| 欧美成人黄色网址| 成人午夜免费剧场| 日韩国产欧美亚洲| 天天天干夜夜夜操| 国产成人三级视频| 欧美成人xxxxx| 91精品无人成人www| 天天爱天天做天天操| 国产毛片视频网站| 日日干夜夜操s8| 欧美一二三不卡| av丝袜天堂网| 久久天天东北熟女毛茸茸| 日韩av高清在线看片| 97超碰人人爽| 日韩少妇内射免费播放| 亚洲欧美国产日韩综合| 日韩欧美猛交xxxxx无码| 99视频精品免费| 久久久久久久9| 99中文字幕在线| 亚洲中文字幕久久精品无码喷水| 伊人精品视频在线观看| 日日摸日日碰夜夜爽av | 一级网站在线观看| www.xxx麻豆| 亚洲综合伊人久久| 日本精品www| 欧美人成在线观看| 国产四区在线观看| 亚洲36d大奶网| 欧美日韩精品在线一区二区| 麻豆md0077饥渴少妇| 亚洲一级免费观看| 99999精品视频| 久久国产精品网|