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

您的位置:首頁>新聞 > 業界 >

天天快看點丨小試Blazor——實現Ant Design Blazor動態表單

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

前言

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

低代碼框架在表現層的第一步則是動態表單,需要將設計時的結構渲染成運行時的表單,本次主要實現動態表單,相關數據接口都以返回固定數據的形式實現


(資料圖)

實現

1.項目準備

先通過命令創建一個Ant Design Blazor項目,并加入到空的解決方案當中:

dotnet new antdesign -o LowCode.Web -ho server

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

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.菜單接口

在項目中新增Services文件夾,添加MenuServices類并填入固定數據,并在Startup類中注冊:

public class MenuService    {        ///         /// 獲取左側導航數據        ///         ///         public virtual MenuDataItem[] GetMenuData()        {            return new MenuDataItem[]            {                new MenuDataItem                {                    Path="/",                    Name="測試模塊",                    Key="Test",                    Icon="smile",                    Children=new MenuDataItem[]                    {                        new MenuDataItem                        {                            Path="/StdForm",                            Name="動態表單",                            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.表單組件接口

創建一個簡單的表單與組件的Model:

錄入控件Input:

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

標準表單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="賬號"                },                new Input()                {                    Name="密碼"                }            });            return result;        }    }

4.動態表單頁面

在Pages文件夾下創建一個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) { } }

運行效果

總結

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

目前僅僅是驗證了動態表單的可能性,其他的組件渲染可以根據Ant Design Blazor官方文檔定義模型結構實現

參考文檔:

Blazor官方文檔

Ant Design Blazor官方文檔

Ant Design Blazor倉庫

關鍵詞:

相關閱讀

久久精品五福影院1421_亚洲看片免费_www国产亚洲精品久久麻豆_影音先锋中文字幕资源
日本www.色| 拔插拔插华人永久免费| 在线免费看v片| 999在线观看| www.com黄色片| 成年网站免费在线观看| 五月婷婷狠狠操| 一道本视频在线观看| 国产一二三区av| 欧美激情第3页| 午夜影院免费观看视频| 天天成人综合网| 丁香六月激情网| 131美女爱做视频| 激情五月婷婷久久| 亚洲美女性囗交| 黄色网在线视频| heyzo亚洲| 中文字幕 91| 91看片淫黄大片91| 37pao成人国产永久免费视频| 国产a级片免费观看| 香蕉视频999| www插插插无码视频网站| 国产日韩一区二区在线观看| 中文字幕第22页| 777精品久无码人妻蜜桃| 黄色片在线免费| 日本成人在线不卡| 国产福利视频在线播放| 国产盗摄视频在线观看| 日韩中文字幕二区| 看一级黄色录像| 美女网站免费观看视频| www.男人天堂网| 久久精品影视大全| 91动漫在线看| 91aaa精品| 亚洲激情在线观看视频| 国产免费一区二区视频| 亚洲免费999| 久久久久久久久久久福利| 天天干天天曰天天操| 国产免费视频传媒| 亚洲 欧美 综合 另类 中字| 男生操女生视频在线观看| 国产成人在线小视频| 欧美日韩亚洲自拍| 东京热加勒比无码少妇| 黄色三级中文字幕| 少妇高潮大叫好爽喷水| 91高清国产视频| 国产小视频精品| 熟女少妇精品一区二区| 国产日韩欧美精品在线观看| 老汉色影院首页| 波多野结衣三级在线| 黄色aaaaaa| 天堂在线中文在线| 亚洲精品乱码久久久久久动漫| 亚洲五月天综合| 少妇黄色一级片| 91淫黄看大片| www欧美激情| 亚洲综合欧美激情| 在线能看的av网站| jizzzz日本| 日本一本在线视频| 喜爱夜蒲2在线| 久久久久久久9| 熟女少妇在线视频播放| 国产成人久久婷婷精品流白浆| 免费欧美一级视频| 成人在线免费播放视频| 国产三级三级三级看三级| 五月婷婷激情久久| 九九九九九九九九| 国产肉体ⅹxxx137大胆| www黄色日本| 国产免费视频传媒| 久热在线视频观看| 永久免费在线看片视频| 免费高清一区二区三区| 91精品91久久久中77777老牛| 成人在线观看a| 欧美日韩精品区别| 亚洲精品久久久久久久蜜桃臀| 毛片在线视频播放| 国内av一区二区| 国产精品va在线观看无码| 草草草在线视频| 水蜜桃在线免费观看| 青青草精品视频在线| 五月天亚洲视频| 成人在线播放网址| 污视频网址在线观看| 大j8黑人w巨大888a片| www.久久av.com| 欧美女人性生活视频| 午夜激情影院在线观看| 18岁网站在线观看| 天堂网成人在线| 国产一区视频免费观看| 亚洲av综合色区| 亚洲一区二区蜜桃| 人妻夜夜添夜夜无码av| 亚洲自拍第三页| 国产成人手机视频| 黄色动漫网站入口| 在线观看成人免费| www.成人黄色| 视频二区在线播放| 成人免费在线小视频| 免费高清一区二区三区| 国产又爽又黄ai换脸| 成人亚洲视频在线观看| 日本a级片免费观看| 青青青在线观看视频| 久久av秘一区二区三区| 亚洲视频第二页| 成年人在线看片| 欧美成人黑人猛交| 黄色片视频在线播放| 亚洲美免无码中文字幕在线| 国产真实老熟女无套内射| 特黄特黄一级片| 亚洲国产精品影视| 无码毛片aaa在线| 日韩亚洲欧美一区二区| 日本精品福利视频| 久久男人资源站| 免费特级黄色片| 日韩av三级在线| 99久久激情视频| 亚洲欧美自偷自拍另类| www.亚洲高清| 亚洲色图欧美自拍| 懂色av粉嫩av蜜臀av| 欧美日韩午夜爽爽| 日本中文字幕亚洲| 亚洲熟妇av一区二区三区| 日韩精品免费播放| 亚洲男人天堂av在线| 天堂av2020| 国产av熟女一区二区三区| 阿v天堂2017| 亚洲免费999| 国产 欧美 日本| 国产一区二区视频播放| 国产精品视频黄色| 妞干网这里只有精品| 青青青在线观看视频| 日韩av在线综合| 国产在线观看中文字幕| 性高湖久久久久久久久aaaaa| 色综合av综合无码综合网站| 日韩爱爱小视频| 国产片侵犯亲女视频播放| 欧美日韩在线中文| 三级av免费看| 无码人妻精品一区二区三区在线| 日本不卡一区二区在线观看| 在线观看免费黄色片| 北条麻妃视频在线| 国产美女作爱全过程免费视频| 99久久国产宗和精品1上映| 国产高清免费在线| 蜜桃免费在线视频| 2018国产在线| 超碰免费在线公开| 嫩草影院国产精品| 国产亚洲黄色片| 天堂网成人在线| 久草综合在线观看| www精品久久| 97av中文字幕| 国产资源中文字幕| 亚洲免费999| 欧洲熟妇精品视频| 国产男女无遮挡| 日韩不卡一二区| 久久精品一卡二卡| 亚洲怡红院在线| 91网址在线播放| 欧美一级在线看| 免费av观看网址| 国产精品专区在线| 日本欧美视频在线观看| www.国产亚洲| 91大学生片黄在线观看| 亚洲免费成人在线视频| 自拍偷拍一区二区三区四区| 久久综合伊人77777麻豆最新章节| 免费观看国产精品视频| 国自产拍偷拍精品啪啪一区二区| 免费看毛片的网址| 隔壁人妻偷人bd中字| 性高湖久久久久久久久aaaaa| 久青草视频在线播放| 2019日韩中文字幕mv|