小试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仓库
关键词:
您可能也感兴趣:
今日热点
为您推荐
当前观察:和桂教授“出差”太空 2023年普通高校招生咨询活动绵阳站 北京航空航天大学“火出圈”
【新视野】特斯拉超算 Dojo 下月投产,24 年末年算力可达 100 Exa-Flops
想买一辆性价比高的车?看车主如何评价轩逸 天天新要闻
排行
最近更新
- 小试Blazor——实现Ant Design Blazor动态表单|全球聚看点
- 今日视点:阚清子纪凌尘疑似复合_阚清子纪凌尘分手
- 端午节假期 宁夏实现旅游收入12.64亿元|今日热搜
- 环球快看点丨做到这 6 点,提高团队协作不是梦
- 西部战区空军某旅特情频出锤炼实战硬功_天天热资讯
- 世界观焦点:李白古体诗的特点_古体诗的特点
- 百年香港电车 叮叮“时光机”有新玩法
- 环球看点!38岁女星法兰琪一尸两命!怀孕5个月发生车祸,同车...
- 中考首日 考点秩序井然 考生提笔逐梦 精彩看点
- 艾尔登是什么意思_AED是什么意思
- 怎样能系好看的蝴蝶结,是鞋子的? 全球新视野
- 蚌埠机场最新进展!助航灯光工程开始建设_天天观天下
- 中级管理会计师考试科目
- 求龙年快乐最新值是多少啊_365tw6000龙年快乐 当前要闻
- 快看点丨河北东光县多样活动迎端午 传统文化浸童心
- 网卡不支持千兆怎么办_网卡配置不支持1000m宽带解决-每日速看
- Xbo老大斯宾塞淡化主机战争 称其只是一种社会建构-重点聚焦
- 中国石油天然气集团有限公司原副总经理徐文荣接受审查调查
- 最新最全!高考发布!|聚看点
- 世界视点!memcached使用中踩的一些坑
- 【天天报资讯】济源市属于哪个市接管_济源市属于哪个市
- 当前速读:理财产品怎么投资_银行理财产品投资
- 微软删除 Win11 多项功能引发众怒:马上改回来!_全球报道
- 英特尔酷睿Ultra 1代处理器现身:核显配备128MB Foveros 3D缓存 世界实时
- 十年登峰之作!荣耀X50官宣:首发骁龙6 Gen1_世界看热讯
- 小米推出经济型手机Redmi A2和A2+查看规格和价格
- iFixit拆解显示华硕ROGAlly比SteamDeck更容易撬开
- 黑斑羚和瞪羚_黑斑羚
- 思想汇报2023_别人说你思想单纯是什么意思|视焦点讯
- 兰博基尼首席执行官确认Urus插电式混合动力车将于明年推出-天...