ABP进阶教程1 - 条件查询
程序员文章站
2023-12-17 18:18:04
点这里进入ABP进阶教程目录 添加实体 打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象添加一个类StatusCode.cs //状态信息 1 using System; 2 using System.Collections.Generic; 3 using Syst ......
添加实体
打开领域层(即jd.crs.core)的entitys目录 //用以存放实体对象
添加一个类statuscode.cs //状态信息
1 using system; 2 using system.collections.generic; 3 using system.text; 4 5 namespace jd.crs.entitys 6 { 7 public enum statuscode : byte 8 { 9 enabled = 0, 10 disabled = 1 11 } 12 }
添加数据传输对象
打开应用层(即jd.crs.application)的course\dto目录 //用以存放course相关数据传输对象
添加一个dto getallcoursesinput.cs
1 using abp.application.services.dto; 2 using jd.crs.entitys; 3 4 namespace jd.crs.course.dto 5 { 6 public class getallcoursesinput: pagedresultrequestdto 7 { 8 public statuscode? status { get; set; } 9 } 10 }
更新应用服务
打开应用层(即jd.crs.application)的course\courseappservice.cs //course应用服务
重写getall方法 //按状态查询course
1 public override async task<pagedresultdto<coursedto>> getall(getallcoursesinput input) 2 { 3 var query = base.createfilteredquery(input).whereif(input.status.hasvalue, t => t.status == input.status.value); 4 var coursecount = query.count(); 5 var courselist = query.tolist(); 6 return new pagedresultdto<coursedto>() 7 { 8 totalcount = coursecount, 9 items = objectmapper.map<list<coursedto>>(courselist) 10 }; 11 }
更新模型
打开展示层(即jd.crs.web.mvc)的models/course/courselistviewmodel.cs //course查询视图模型
新增getstatuslist方法 //获取状态列表
1 public statuscode? selectedstatus { get; set; } 2 3 public list<selectlistitem> getstatuslist(ilocalizationmanager localizationmanager) 4 { 5 var list = new list<selectlistitem> 6 { 7 new selectlistitem 8 { 9 text = localizationmanager.getstring(crsconsts.localizationsourcename, "all"), 10 value = "", 11 selected = selectedstatus == null 12 } 13 }; 14 15 list.addrange(enum.getvalues(typeof(statuscode)) 16 .cast<statuscode>() 17 .select(status => 18 new selectlistitem 19 { 20 text = localizationmanager.getstring(crsconsts.localizationsourcename, $"statuscode_{status}"), 21 value = status.tostring(), 22 selected = status == selectedstatus 23 }) 24 );
更新控制器
打开展示层(即jd.crs.web.mvc)的controllers/coursecontroller.cs //course控制器
更新index方法 //按状态查询course
1 public async task<actionresult> index(getallcoursesinput input) 2 { 3 ireadonlylist<coursedto> output = (await _courseappservice.getall(new getallcoursesinput { status = input.status })).items; 4 var model = new courselistviewmodel(output) 5 { 6 selectedstatus = input.status 7 }; 8 return view(model); 9 }
更新视图
打开展示层(即jd.crs.web.mvc)的views/course/index.cshtml //course查询视图
插入查询条件 //按状态查询course
1 <div class="header"> 2 <table> 3 <thead> 4 <tr> 5 <th class="col-sm-1">@l("status")</th> 6 <th class="col-sm-1"> 7 @html.dropdownlistfor( 8 model => model.selectedstatus, 9 model.getstatuslist(localizationmanager), 10 new 11 { 12 @class = "form-control", 13 id = "statuscombobox" 14 }) 15 </th> 16 <th class="col-sm-10"></th> 17 </tr> 18 </thead> 19 </table> 20 </div>
更新脚本
打开展示层(即jd.crs.web.mvc)的\wwwroot\view-resources\views\course\index.js //用以存放course查询相关脚本
插入查询条件 //按状态查询course
1 var _$statuscombobox = $('#statuscombobox'); 2 _$statuscombobox.change(function () { 3 location.href = '/course?status=' + _$statuscombobox.val(); 4 });
预览效果