查询过滤器Web.Filter.QueryFilterAttribute主要用于给添加修改、查询删除操作方法设置条件。
[Route("api/[controller]/[action]")]
[ApiController]
[QueryFilter]
public class AreaController: MyBaseController<Area>
[HttpGet]
public Result List([FromQuery] Dictionary<string, string> where)
{
return Result.Success("succeed").SetData(bll.Query(where));
}
}
QueryFilterAttribute内置预设查询参数有:
1、对于删除方法"delete"|"batchdelete":如果用户登录了但非管理员角色admin, 则向条件where添加Sys为false,表示非管理员不能删除系统数据,Sys为true表示系统数据
2、对于查询方法"list", "get", "query":
a、设置sort为-Added_time,表示默认按照添加时间降序排列
b、如果登录了,根据角色类型添加UserId的值,表示每个会员只能查询自己添加的数据,而管理员可以查询所有数据
/api/area/list?sort=-Id&name=武汉&pageNo=1
sort,排序,值的格式为:+|-字段名,+|-字段名。如-Id根据Id字段递减排序;+Id根据Id字段递增排序。可多个字段排序:如+Id,-Added_time。注意:字段名必须是实体类里面的属性名,大小写保存一致 pageNo,查询页码;<=0则查询所有,默认1。 pageSize,每页显示数量;<=0则查询所有,默认12。 条件查询,格式:字段名__操作符=值。如"parent.id__eq=1"、 ParentId=null如果不加操作符,默认是等于eq 即如:parent.id=1与parent.id__eq=1等价。注意:字段名必须是实体类里面的属性名,大小写保存一致 条件查询操作符有:contains包含,eq等于,ne不等于,gt大于,gte大于等于,lt小于, lte小于等于,in包含,between在……之间。如果是in查询,多个值之间","分隔,比如“id__in=1,2,3”
/api/area/get/1
/api/area/delete/1
或
/api/area/delete?id=1
/api/area/delete/1,2,3
或
/api/area/delete?id=1,2,3
/api/area/delete?name=武汉
[Route("api/[controller]/[action]")]
[ApiController]
[QueryFilter]
public class AreaController: MyBaseController<Area>
[HttpPost]
public Result Add(Area o)
{
return ModelState.IsValid ? (bll.Add(o) ? Result.Success("添加成功") : Result.Error("添加失败")) : Result.Error("添加失败!" + ModelState.GetAllErrMsgStr(";")); ;
}
}
QueryFilterAttribute内置预设查询参数有:
1、如果方法参数实体实现了IUser接口,并且用户登录,则给实体设置UserId值,给数据设置一个标志,表示登录用户进行了增加或修改
2、如果登录用户角色不是管理员,则将实体的Sys设置为false,表示非系统资源,登录用户角色是管理员设置为true,表示是系统资源
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。