天天快看點(diǎn)丨小試Blazor——實(shí)現(xiàn)Ant Design Blazor動(dòng)態(tài)表單
前言
最近想了解下Blazor,于是嘗試使用Blazor寫(xiě)一個(gè)簡(jiǎn)單的低代碼框架,于是就采用了Ant Design Blazor作為組件庫(kù)
低代碼框架在表現(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)備
先通過(guò)命令創(chuàng)建一個(gè)Ant Design Blazor項(xiàng)目,并加入到空的解決方案當(dāng)中:
dotnet new antdesign -o LowCode.Web -ho server
由于我們需要寫(xiě)一些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類中注冊(cè):
public class MenuService { ////// 獲取左側(cè)導(dǎo)航數(shù)據(jù) /// ///public virtual MenuDataItem[] GetMenuData() { return new MenuDataItem[] { new MenuDataItem { Path="/", Name="測(cè)試模塊", 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中獲?。?/p>
private MenuDataItem[] _menuData ; [Inject] public MenuService MenuService { get; set; } protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); _menuData = MenuService.GetMenuData(); }
3.表單組件接口
創(chuàng)建一個(gè)簡(jiǎn)單的表單與組件的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)表單頁(yè)面
在Pages文件夾下創(chuàng)建一個(gè)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"
運(yùn)行效果
總結(jié)
在Blazor項(xiàng)目中要訪問(wèn)API接口則需要注入HttpClient類,使用HttpClient請(qǐng)求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倉(cāng)庫(kù)
關(guān)鍵詞:
相關(guān)閱讀
-
天天快看點(diǎn)丨小試Blazor——實(shí)現(xiàn)Ant De...
前言最近想了解下Blazor,于是嘗試使用Blazor寫(xiě)一個(gè)簡(jiǎn)單的低代碼框架, -
焦點(diǎn)關(guān)注:全新ds4實(shí)車亮相,外觀時(shí)尚動(dòng)...
據(jù)悉,法系豪華品牌DS旗下緊湊型車——全新DS4將于7月13日上市!近... -
今日熱訊:山東高溫已持續(xù)三天 今明兩...
舜網(wǎng)山東頻道是山東新聞權(quán)威發(fā)布平臺(tái),及時(shí)發(fā)布山東17地市新聞。 -
安全頭枕在發(fā)生追尾事故時(shí)能有效保護(hù)駕...
1、要看你說(shuō)的是那個(gè)人了。2、如果是你撞到別人的車屁股上了,保護(hù)你的 -
塑鋼泥和玻璃膠的區(qū)別_廚房水槽要打玻璃...
導(dǎo)讀:廚房水槽的安裝是有一些小知識(shí)需要提前知道的,一般廚房水槽邊打 -
家里掛什么畫(huà)好呢可以招財(cái)_家里掛什么畫(huà)...
導(dǎo)讀:家里掛什么畫(huà)寓意好?以下由小編為大家?guī)?lái)介紹。富貴花開(kāi)工筆花 -
合影拍照姿勢(shì)大全_拍照姿勢(shì)大全
1、今天給大家?guī)?lái)了拍照pose姿勢(shì)大全,希望對(duì)大家有所幫助哦!posinga -
氣象專家:厄爾尼諾將給我國(guó)帶來(lái)哪些影...
新華社北京6月24日電題:氣象專家:厄爾尼諾將給我國(guó)帶來(lái)哪些影響?新華 -
鄭州17.67億元掛牌金水區(qū)2宗宅地 為城...
此次出讓鄭政出〔2023〕11、12號(hào)(網(wǎng))地塊均為城中村改造項(xiàng)目用地,網(wǎng) -
通訊!孤島危機(jī)5下載_孤島危機(jī)5
1、最低配置要求:系統(tǒng):Windows7SP1,Windows8 1,Windows10(僅64位版)處 -
【解決方法】按鍵精靈 實(shí)現(xiàn) 狂野飆車9...
環(huán)境:>工具:手機(jī) 安卓模擬器,按鍵精靈手機(jī)助手系統(tǒng)版本:android10 -
1小時(shí)雨量已達(dá)91.4毫米 海口發(fā)布暴雨紅色預(yù)警
記者從海南??跉庀蟛块T(mén)了解到,受對(duì)流云團(tuán)影響,??谑惺袇^(qū)汽車南站近 -
神界傳說(shuō)動(dòng)漫11集(神界傳說(shuō)動(dòng)漫全集)-...
神界傳說(shuō)動(dòng)漫11集,神界傳說(shuō)動(dòng)漫全集這個(gè)很多人還不知道,現(xiàn)在讓我們一 -
新動(dòng)態(tài):中考開(kāi)考 | 廈門(mén)4.77萬(wàn)名初三...
廈門(mén)4 77萬(wàn)名初三學(xué)生今天中考,歷時(shí)兩天半。今年5 1萬(wàn)名初二學(xué)生參加 -
四川省2023年普通高等學(xué)校藝術(shù)體育類專...
經(jīng)四川省高等教育招生考試委員會(huì)審議通過(guò),四川省2023年普通高等學(xué)校藝 -
【全球時(shí)快訊】車主自己訓(xùn)練常用路線 ...
所以,五菱聯(lián)手老朋友大疆,用5,000元左右的微小成本,創(chuàng)新地做出了一 -
鐮刀妹AI智能播報(bào)|6月25日長(zhǎng)沙天氣和明...
長(zhǎng)沙晚報(bào)掌上長(zhǎng)沙06月25日訊長(zhǎng)沙市,06月25號(hào),白天,中雨,氣溫27攝氏 -
天刀俠客島怎么創(chuàng)建幫派 天刀俠客島怎...
1、俠客島獲得:達(dá)到85級(jí)后,獲取航海教學(xué)任務(wù)中即可獲得【每個(gè)玩家可 -
翻出十八年前的索愛(ài)W800手機(jī),Walkman音...
我在學(xué)生時(shí)代算是最早一批用手機(jī)的人,大概高二那年就接觸到了手機(jī),并 -
河南高考分?jǐn)?shù)線公布 今起可查詢成績(jī) ...
本科一批文科547分,理科514分;本科二批文科465分,理科409分;高職高