頁面權限(比如可以進入訂單查詢界面)
- 設置權限得把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第三部分