编辑
2024-05-29
我当开发
00

chuxue2.png

正好要做个工具,用FineUI11,一步一步的搭建一个项目

1. 首先新建一个项目,

图片.png

编辑
2024-05-26
我当开发
00

上一次的初学手册已经是2014年写的了,10年间FineUI产品发生了巨大的变化,最近FineUI11发布了,初学手册也跟着更新一下;

编辑
2024-05-23
我当开发
00

今天继续记录下全球唯一的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; }

这样前台会省点地方,我一直提倡的是框架本身也是一个产品,要面向开发,写代码的根来自需求,需求除了客户事业业务需求还应该包括产品需求开发需求 测试需求 运维需求,这些需求都来自项目干系人,然后再落到软件开发上,这个话题打字会很累,这里不深入了。

编辑
2024-05-22
我当开发
00

kuozhan3.png 通过前两次的笔记,终于为FineUI11的控件标签增加了自定义的属性,今天继续以AutoEmptyText为例,让属性生效。

在扩展的第一篇(FineUI11.0-CoreWebForms笔记(五))中是写过这个例子的:

protected override void PreProcess(TagHelperContext context, TagHelperOutput output) { base.PreProcess(context, output); }

1. 伪代码

在上一篇的笔记提到,Razor写法父元素是找不到子元素的,虽然我给Form标签增加了AutoEmptyText属性,但是这个属性本身不影响Form,而是Form的子元素,就是表单的字段,比如TextBox DropDownList等;

编辑
2024-05-21
我当开发
00

kuozhan2.png 对于前台的页面cshtml函数式写法Razor写法,有一个明显的区别,在执行绘制时:

  • 函数式写法会按顺序读到EditForm开始绘制,其中的子控件txt1作为参数传入了Form,在Form绘制时处理,这使得txt1找不到它的爹,因为它只是个参数,是因为爹绘制了才触发了子元素的绘制,在应用上我们可以重写Form的绘制让其不绘制子元素;父元素可以完全控制子元素,但是子元素找不到爹;

  • Razor写法会按顺序读到Form1开始绘制,但是它的子元素是拿不到的,然后按照层级继续绘制,到Label1时,Label1知道它的层级,就是能找到自己的爹,发现包含在Form1里;父元素找不到子元素,但是子元素知道自己的爹;

函数式写法
F.Form() .RowsEx(1, F.TextBox().ID("txt1").Label("用户名称").DataField(nameof(Mssystem_1.System_1_20)).Required(true) )
Razor写法
<f:Form ID="Form1" IsFluid="true" BodyPadding="10" LabelWidth="100" EnableCollapse="false" Title="表单 1" AutoEmptyText="true"> <Rows> <f:FormRow> <Items> <f:TextBox ID="TextBox1" ShowRedStar="true" Label="文本框" Required="true" Text=""> </f:TextBox> </Items> </f:FormRow> </Rows> </f:Form>