我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
--------------------------------------------------------------------------------------------------------------
PasteForm的升级版PasteApeart,享受极致简洁的框架的魅力,点击查看文档
--------------------------------------------------------------------------------------------------------------
先来看一下效果
可以看到上方的菜单中,中间这一行只有2个菜单,在实际开发中,我们主要遇到这样的几种情况
/// <summary>
///
/// </summary>
[PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
public int Menu1 { get; }
普通菜单很简单,直接这样写就可以了,这个的写法和前端有关,注意数据字段到前端的时候,默认首单词小写,你也可以用另外一种写法
/// <summary>
///
/// </summary>
[PasteMenuhtml]
public string Menu11 => $"<a href=\"javascript:;\" onclick=\"open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={Id}','80%','80%')\">绑定权限</a>";
上面这两种写法是等效的,不过要注意内容不一样,你要是注意看的话会发现,比如他们的特性不一样,一个是[PasteMenu]一个是[PasteMenuhtml]
有时候,我们要基于权限来显示,也就是不同人登录,看到不一样的数据
/// <summary>
/// 权限模式
/// </summary>
[PasteHidden]
[PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu3 { get; }
/// <summary>
/// 条件权限模式
/// </summary>
[PasteHidden]
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu32 { get; }
自信观察,会发觉就是加了一个参数btnCode,这个字段要启用,在读取模板的时候,需要读取当前用户的按钮权限列表!
千呼万唤始出来,按钮控制终于来了!!!PasteApeart实现权限按钮就是这么简单
注意,使用了btnCode一定要配置特性[PasteHidden]
基于数据,就是和数据有关,啥时候显示,啥时候不显示
/// <summary>
/// 条件模式
/// </summary>
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
public int Menu31 { get; }
/// <summary>
/// 条件权限模式
/// </summary>
[PasteHidden]
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu32 { get; }
/// <summary>
/// 直接渲染UI
/// </summary>
[PasteMenuhtml]
public string Menu2 => IsEnable ? $"<a href=\"javascript:;\" onclick=\"open_window('{Name}的详细','./pasteform/detail.html?path=gradeInfo&id={Id}','','90%')\">{IsEnable}</a>" : $"";
可以看到上面的,一个是基于id是否=2来判断,你也可以基于其他字段判断,不过有一点要注意!
当字段的类型是枚举类型的时候,不能直接这样判断,你要get一个int值得字段出来

上面说的是后端得代码
前端部分,还有一个关键点,就是菜单区域得宽度,这个有一个默认值,你也可以配置
_config.menu_max_width
这个默认值是500宽度,也就是最大菜单宽度多少,超过就换行了!
你也可以通过query来配置
比如
./pasteform/index.html?path=userInfo&menu_max_width=600
熟记这几个,那么菜单问题你就能搞定了!!
世事无常本无罪
不用选,后面都是PasteApeart,他们其实是一个东西
看版本,PasteApeart.Helper 26.9.2之后,就按照基类前面的顺序了,也符合阅读顺序,当然你可以使用PasteSort再次改变他!
1.语言吧,这本身只是一个开发思想,其实其他语言也可以用,不过最优雅实现的还是.NET
2.特别适用于需要表单,表格的系统,所以哪些EMS,CRM,ERP等都合适
3.扩展,比如这个思想,你也可以应用于C/S,理论上也是可以的
4.这个主要针对的是管理端,附带UI的CRUD,也就是说对于业务代码,是没影响的!
5.可能入门会麻烦点,毕竟有接近100个PasteXXXX特性要了解,幸运的是都是Paste开头,官方的也支持,比如MaxLength,Required等!