小試Blazor——實現(xiàn)Ant Design Blazor動態(tài)表單
前言
(資料圖片僅供參考)
最近想了解下Blazor,于是嘗試使用Blazor寫一個簡單的低代碼框架,于是就采用了Ant Design Blazor作為組件庫
低代碼框架在表現(xiàn)層的第一步則是動態(tài)表單,需要將設計時的結構渲染成運行時的表單,本次主要實現(xiàn)動態(tài)表單,相關數(shù)據(jù)接口都以返回固定數(shù)據(jù)的形式實現(xiàn)
實現(xiàn)
1.項目準備
先通過命令創(chuàng)建一個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類并填入固定數(shù)據(jù),并在Startup類中注冊:
public class MenuService { ////// 獲取左側導航數(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="動態(tài)表單", Key="Form", Icon="plus-square" } } } }; } }
修改BaseicLayout.razor中@code部分,將_menuData改為從MenuService中獲?。?/p>
private MenuDataItem[] _menuData ; [Inject] public MenuService MenuService { get; set; } protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); _menuData = MenuService.GetMenuData(); }
3.表單組件接口
創(chuàng)建一個簡單的表單與組件的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.動態(tài)表單頁面
在Pages文件夾下創(chuàng)建一個StdForm.razor和StdForm.razor.cs文件
StdForm.razor.cs(注意partial):
public partial class StdForm { public StandardFormModel StandardFormModel { get; set; } public FormStdFormModel { 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"
運行效果
總結
在Blazor項目中要訪問API接口則需要注入HttpClient類,使用HttpClient請求API接口即可,也可以直接注入Services調用。
目前僅僅是驗證了動態(tài)表單的可能性,其他的組件渲染可以根據(jù)Ant Design Blazor官方文檔定義模型結構實現(xiàn)
參考文檔:
Blazor官方文檔
Ant Design Blazor官方文檔
Ant Design Blazor倉庫
關鍵詞:
相關閱讀
-
小試Blazor——實現(xiàn)Ant Design Blazor動態(tài)表單
前言最近想了解下Blazor,于是嘗試使用Blazor寫一個簡單的低代碼框架, -
霍爾電機霍爾壞了一個會怎樣 霍爾電機|...
1、電動車電機霍爾工作原理:霍耳的信號線傳遞電機里面磁鋼相對于線圈 -
ibm中國有限公司_IBM的前身是哪一家公司
1、IBM的前身為CTR公司。2、IBM的歷史可以追溯到電子計算機發(fā)展前的幾 -
超好用bb霜推薦平價 6款百元就能購買的...
hello大家好,我是城鄉(xiāng)經濟網(wǎng)小晟來為大家解答以上問題,超好用bb霜推 -
全球即時:泰晤士:曼城改善給B席的續(xù)約...
直播吧6月25日訊《泰晤士報》報道,曼城已改善了對貝爾納多-席爾瓦的續(xù) -
環(huán)球即時:陜西高考生 填報志愿 “五...
6月24日,經陜西省招生委員會研究決定,2023年全國普通高等學校招生陜 -
領克是什么牌子的車多少價格_領克是什么...
解答:1、柯靈汽車是由吉利控股集團、吉利汽車集團和沃爾沃汽車共同打 -
油葵怎么炒菜_油葵油炒菜吃了有什么好處...
1、油葵油也可以做葵花油,清純透明,清香可口。2、在國外,被譽為最佳 -
我市特需家長服務中心成立-全球新消息
6月21日,南京市特需學生家長服務中心在南京市特殊教育指導中心揭牌啟 -
環(huán)球快看點丨“以海育人”如何落地
沿海城市幼兒園探索海洋文化與教育的共融——“以海育人”如何落地... -
今日熱訊:n型電池股票是什么?n型電池...
n型電池股票是什么?n型電池相關龍頭股一覽(2023 6 25),南方財富網(wǎng)為 -
北京連續(xù)三天最高溫超40℃,6月“炎值”...
京城連續(xù)三日“熱晴不減”,且高溫紅色預警持續(xù)生效。截至24日13時5... -
全球速遞!新式軍號,全軍配發(fā)!
新式軍號即將配發(fā)全軍,近日信息通信部隊某部接收了一批新式軍號,快來 -
瓦格納集團車隊調轉方向返回營地,最新...
當?shù)貢r間25日凌晨,俄羅斯羅斯托夫州州長格魯貝夫發(fā)布消息稱,瓦格納集 -
我國北部和東部海域將有6-7級風 南部沿...
人民網(wǎng)北京6月25日電(記者楊虞波羅)據(jù)中央氣象臺消息,24日14時至25 -
焦點播報:東方紅資管周楊:新能源車下游...
東方紅資管周楊在節(jié)目上表示,隨著新能源車整車行業(yè)不斷降價,行業(yè)格局 -
觀察:24日早上北京市交管局接考生求助6起
北京日報訊(記者安然)市交管局昨天發(fā)布,截至上午9時,市交管部門共 -
南京大屠殺幸存者高恒發(fā)去世 在世在冊...
原標題:南京大屠殺幸存者高恒發(fā)去世在世在冊幸存者僅剩39位 侵華日 -
焦點日報:吉林省農藥包裝廢棄物回收處...
為扎實推進吉林省農藥包裝廢棄物回收處理,省農業(yè)農村廳在吉林舒蘭召開 -
前5月陜西新能源汽車產量同比增長44.2%...
6月20日,記者從陜西省汽車工業(yè)協(xié)會獲悉:1月至5月,陜西汽車產量達49