天天快看點丨小試Blazor——實現Ant Design Blazor動態表單
前言
最近想了解下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 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調用。
目前僅僅是驗證了動態表單的可能性,其他的組件渲染可以根據Ant Design Blazor官方文檔定義模型結構實現
參考文檔:
Blazor官方文檔
Ant Design Blazor官方文檔
Ant Design Blazor倉庫
關鍵詞:
相關閱讀
-
天天快看點丨小試Blazor——實現Ant De...
前言最近想了解下Blazor,于是嘗試使用Blazor寫一個簡單的低代碼框架, -
焦點關注:全新ds4實車亮相,外觀時尚動...
據悉,法系豪華品牌DS旗下緊湊型車——全新DS4將于7月13日上市!近... -
今日熱訊:山東高溫已持續三天 今明兩...
舜網山東頻道是山東新聞權威發布平臺,及時發布山東17地市新聞。 -
安全頭枕在發生追尾事故時能有效保護駕...
1、要看你說的是那個人了。2、如果是你撞到別人的車屁股上了,保護你的 -
塑鋼泥和玻璃膠的區別_廚房水槽要打玻璃...
導讀:廚房水槽的安裝是有一些小知識需要提前知道的,一般廚房水槽邊打 -
家里掛什么畫好呢可以招財_家里掛什么畫...
導讀:家里掛什么畫寓意好?以下由小編為大家帶來介紹。富貴花開工筆花 -
合影拍照姿勢大全_拍照姿勢大全
1、今天給大家帶來了拍照pose姿勢大全,希望對大家有所幫助哦!posinga -
氣象專家:厄爾尼諾將給我國帶來哪些影...
新華社北京6月24日電題:氣象專家:厄爾尼諾將給我國帶來哪些影響?新華 -
鄭州17.67億元掛牌金水區2宗宅地 為城...
此次出讓鄭政出〔2023〕11、12號(網)地塊均為城中村改造項目用地,網 -
通訊!孤島危機5下載_孤島危機5
1、最低配置要求:系統:Windows7SP1,Windows8 1,Windows10(僅64位版)處 -
【解決方法】按鍵精靈 實現 狂野飆車9...
環境:>工具:手機 安卓模擬器,按鍵精靈手機助手系統版本:android10 -
1小時雨量已達91.4毫米 海口發布暴雨紅色預警
記者從海南海口氣象部門了解到,受對流云團影響,海口市市區汽車南站近 -
神界傳說動漫11集(神界傳說動漫全集)-...
神界傳說動漫11集,神界傳說動漫全集這個很多人還不知道,現在讓我們一 -
新動態:中考開考 | 廈門4.77萬名初三...
廈門4 77萬名初三學生今天中考,歷時兩天半。今年5 1萬名初二學生參加 -
四川省2023年普通高等學校藝術體育類專...
經四川省高等教育招生考試委員會審議通過,四川省2023年普通高等學校藝 -
【全球時快訊】車主自己訓練常用路線 ...
所以,五菱聯手老朋友大疆,用5,000元左右的微小成本,創新地做出了一 -
鐮刀妹AI智能播報|6月25日長沙天氣和明...
長沙晚報掌上長沙06月25日訊長沙市,06月25號,白天,中雨,氣溫27攝氏 -
天刀俠客島怎么創建幫派 天刀俠客島怎...
1、俠客島獲得:達到85級后,獲取航海教學任務中即可獲得【每個玩家可 -
翻出十八年前的索愛W800手機,Walkman音...
我在學生時代算是最早一批用手機的人,大概高二那年就接觸到了手機,并 -
河南高考分數線公布 今起可查詢成績 ...
本科一批文科547分,理科514分;本科二批文科465分,理科409分;高職高