天天快看点丨小试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分;高职高