FineUI11出来,想上手开发试一试,正好手头有个需求,就做了个工具;
公司运维的项目越来越多,环境端口啥的容易忘,所以要记录下,上个K8S吧又太大了,所以只能自己记录,画图吧,我就让AI给我输出 mermaid
,然后去编辑,导出流程图,这是个完整的工作流,我用FineUI和GPT接口组合到一个页面了;
项目已经开源了 https://gitee.com/shixixiyue/mermaid-help 这里主要说开发过程遇见的坑;
上一次的初学手册已经是2014年写的了,10年间FineUI产品发生了巨大的变化,最近FineUI11发布了,初学手册也跟着更新一下;
今天继续记录下全球唯一
的FineUI11改造体验,将思路和关键代码记录一下,作为过程资产,省着自己忘;
我这里还有一个需求,就是开发时控件我都会写个默认的匹配,比如页面的搜索表单,会使用相同的默认属性:
/// <summary> /// 默认属性 <br/> /// 滚动条 true <br/> /// 边框 false <br/> /// 头 false <br/> /// 间距 10 10 0 5 <br/> /// 子项间距 0 5 0 5 <br/> /// </summary> public static FormExtension DefaultAttr(this FormExtension f) { f.AutoScroll(true) ShowBorder(false) ShowHeader(false) BodyPadding("10 10 0 5") BoxConfigChildMargin("0 5 0 5"); return f; }
这样前台会省点地方,我一直提倡的是框架本身也是一个产品,要面向开发,写代码的根来自需求,需求除了客户事业业务需求还应该包括产品需求
和开发需求
测试需求
运维需求
,这些需求都来自项目干系人,然后再落到软件开发上,这个话题打字会很累,这里不深入了。
通过前两次的笔记,终于为FineUI11
的控件标签增加了自定义的属性,今天继续以AutoEmptyText
为例,让属性生效。
在扩展的第一篇(FineUI11.0-CoreWebForms笔记(五))中是写过这个例子的:
protected override void PreProcess(TagHelperContext context, TagHelperOutput output) { base.PreProcess(context, output); }
在上一篇的笔记提到,Razor写法
父元素是找不到子元素的,虽然我给Form
标签增加了AutoEmptyText
属性,但是这个属性本身不影响Form
,而是Form
的子元素,就是表单的字段,比如TextBox
DropDownList
等;