W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
BaseBatchVM是框架中負(fù)責(zé)批量更新和刪除的VM,它本身繼承自BaseVM,同時它是一個組合VM,內(nèi)部包括了一個ListVM用來顯示批量操作的列表,以及一個BaseVM用來設(shè)置需要更新的字段
建立一個BaseBatchVM建立一個BatchVM分兩步
1. 建立一個普通的VM用來設(shè)置需要批量更新的字段
2. 建立一個BatchVM并使用第一步建立的VM作為泛型變量
下面以學(xué)校的模型為例,演示如何建立一個BatchVM對學(xué)校數(shù)據(jù)進(jìn)行批量修改和刪除。學(xué)校模型的定義可以參考第一個模塊
- public class SchoolBatchVM : BaseBatchVM<School, School_BatchEdit>
- {
- public SchoolBatchVM()
- {
- ListVM = new SchoolListVM();
- LinkedVM = new School_BatchEdit();
- }
- }
- ///
- /// 批量編輯字段類
- ///
- public class School_BatchEdit : BaseVM
- {
- [Display(Name = "學(xué)校類型")]
- public SchoolTypeEnum? SchoolType { get; set; }
- }
-
以上代碼定義了一個簡單的BatchVM,用來批量修改學(xué)校類型這個字段,以及批量刪除學(xué)校數(shù)據(jù)
ListVM指向一個繼承自BasePagedListVM的類,負(fù)責(zé)顯示數(shù)據(jù)列表
LinkedVM指向一個繼承自BaseVM的類,負(fù)責(zé)指定需要更新的字段
在Controller中使用BatchVM和使用其他VM是一樣的,請看下面的例子
- #region 批量修改
- [HttpPost]
- [ActionDescription("批量修改")]
- public ActionResult BatchEdit(Guid[] IDs)
- {
- var vm = CreateVM<SchoolBatchVM>(Ids: IDs);
- return PartialView(vm);
- }
- [HttpPost]
- [ActionDescription("批量修改")]
- public ActionResult DoBatchEdit(SchoolBatchVM vm, IFormCollection nouse)
- {
- if (!ModelState.IsValid || !vm.DoBatchEdit())
- {
- return PartialView("BatchEdit",vm);
- }
- else
- {
- return FFResult().RefreshGrid().CloseDialog().Alert("操作成功,共有"+vm.Ids.Length+"條數(shù)據(jù)被修改");
- }
- }
- #endregion
- #region 批量刪除
- [HttpPost]
- [ActionDescription("批量刪除")]
- public ActionResult BatchDelete(Guid[] IDs)
- {
- var vm = CreateVM<SchoolBatchVM>(Ids: IDs);
- return PartialView(vm);
- }
- [HttpPost]
- [ActionDescription("批量刪除")]
- public ActionResult DoBatchDelete(SchoolBatchVM vm, IFormCollection nouse)
- {
- if (!ModelState.IsValid || !vm.DoBatchDelete())
- {
- return PartialView("BatchDelete",vm);
- }
- else
- {
- return FFResult().RefreshGrid().CloseDialog().Alert("操作成功,共有"+vm.Ids.Length+"條數(shù)據(jù)被刪除");
- }
- }
- #endregion
- }
-
DoBatchEdit和DoBatchDelete是BatchVM中提供的函數(shù),用于進(jìn)行批量修改和刪除
必須使用CreateVM函數(shù)來創(chuàng)建ViewModel,而不要直接new。CreateVM函數(shù)會將當(dāng)前Controller的Session,ModelState等信息傳遞給VM,并進(jìn)行一些框架內(nèi)部的操作
FFResult是框架提供的一個輔助類,主要是方便開發(fā)人員返回常用js,比如關(guān)閉當(dāng)前窗口,刷新grid等
BaseBatchVM繼承自BaseVM,所以一樣可以通過重寫Validate方法來實現(xiàn)復(fù)雜的自定義驗證
BatchVM定義了一個CheckIfCanDelete方法,重寫該方法可以在批量刪除時定義一些驗證邏輯
屬性 | 描述 |
---|
ListVM | 一個繼承自BasePagedListVM的類,負(fù)責(zé)輸出列表數(shù)據(jù) |
LinkedVM | 一個繼承自BaseVM的類,負(fù)責(zé)定義需要批量修改的字段 |
函數(shù) | 描述 |
---|
DoBatchDelete() | 進(jìn)行批量刪除 |
DoBatchEdit() | 進(jìn)行批量修改。通過對比BatchVM中綁定Model中的字段和LinkedVM中定義的字段,如果有同名字段,則修改 |
CheckIfCanDelete() | 批量刪除時的驗證條件,需要在在繼承類中重寫 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: