页面权限(比如可以进入订单查询界面)
- 设置权限得把appsettings.json里的debug关掉
- 设置好菜单后,并没有权限访问页面。 需要到角色管理 -> 页面权限里去关闭再打开权限,才会生效
- API同上。必须再菜单里设置,只不过不显示。 然后到角色管理 -> 页面权限里去关闭再打开权限,才会生效
数据权限(比如店长只能看见自己店的订单)
- 首先是program.cs
var pris = new List<IDataPriviledge>{
new DataPriviledgeInfo<City>("地点", y => y.Name),
}
x.AddFrameworkService(dataPriviledgeSettings:pris);
- 然后是相应页面的viewmodel里的查询语句
//写在select上面
.DPWhere(LoginUserInfo.DataPriviledges, x => x.LocationId) //写多个lamda表达式(逗号分割)就是or的关系
//再写一个.DPWhere就形成了and关系
- 最后去系统内对用户/用户组设置数据权限
更细的数据权限(比如销售只能看见自己开的订单)
这种情况不属于wtm的"数据权限"的概念, 因为完全可以这么写.Where(x => x.UpdateBy == LoginUserInfo.Id)
自定义用户
- 首先新建一个类, 继承用户基类
[Table("FrameworkUsers")] //表示还是用原来的数据表
public class MyUser : FrameworkUserBase //继承WTM用户基类
{
[Display(Name = "附加信息1")]
public string Extra1 { get; set; }
[Display(Name = "附加信息2")]
public string Extra2 { get; set; }
}
- 然后在DataContext里增加DbSet
public DbSet<MyUser> MyUsers { get; set; }
- 生成代码
- 在MyUserController.cs内的vm.DoAdd();上增加一句代码
vm.Entity.Password = Utils.GetMD5String(vm.Entity.Password); - 最后要实现用户登录以后的赋值(到LoginUserInfo内)
// LoginVm.cs
//查找DoLogin
var user = DC.Set<MyUser>() //将整个系统的登录用户的模型改成自定义的这个
//查找LoginUserInfo rv
Attributes= new Dictionary<string,object>() { ["Extra1"] = user.Extra1 } //把所有附加信息以字典形式赋值到一个属性里
//cshtml中
@Model.LoginUserInfo.Attributes["Extra1"]
- 增加菜单项
ListVM
- 不要分页的话在ListVM中增加构造函数(原来没有), 添加代码
NeedPage=false;
view里的taghelper
- 分页数量在前台页面的分页wt:grid中加上属性
limit="50" - 不想显示checkbox也是wt:grid中加上属性
hidden-checkbox="true" - 不想显示序号也是wt:grid中加上属性
hidden-grade-index="true"
InitGridHeader()可以做很多事
- 对某个列实现排序, 想排序的列加上
.SetSort()即可 - 格式化某个列, 加上SetFormat方法, 如
.SetFormat((a,b)=>a.Birthday.Value.ToShortDateString()), 此处lamda表示传入a,b参数, 返回箭头后的东西 - 增加一个新列, 如
this.MakeGridHeader(x=>"Test").SetHeader("测试").SetFormat((a,b)=>"aaaa")
自定义方法(详见视频教程ListVM第一段和第四段)
- 在listvm内添加一个按钮
- 在controller内复制一组ActionResult, 有[HttpPost]的那个是最终提交, 是实际操作数据的方法; 没有的是用户点击按钮之后的方法, 作用是创建vm并绑定到弹窗里的view及其控件.
- 对ActionReuslt的两个方法设置传参(比如Guid id)
- 新建view(根据情况, 可从Edit.cshtml复制并修改)
- 其他可配置项:
SetShowInRow() //在每一行显示
SetHideOnToolBar() //顶部隐藏本按钮
SetShowDialog(false).SetIsRedirect(true)//点击按钮会打开新标签页
- 若要根据条件显示隐藏按钮, 可增加一个新列, 如
this.MakeGridHeader(x=>"Test").SetHeader("显示隐藏按钮专用列").SetHide().SetFormat((a,b)=>{
if(a.Status!=PatientStatusEnum.SiWang){return "true";}
return "false";
})
行变色需要这么写
public override string SetFullRowBgColor(object Entity){
{class}_view p=({class}_view)entity;
if (p.Status=="good"){ return "#FF0000" }
return "";
}
高级用法
在某条数据的详情弹窗里显示关联数据: 详见视频教程ListVM第三部分
