首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从.Net中的字符串验证模型/类的属性?

如何从.Net中的字符串验证模型/类的属性?
EN

Stack Overflow用户
提问于 2019-09-13 12:48:25
回答 1查看 23关注 0票数 0

我有一个web api控制器,它通过字符串扩展Linq动态来做ApplySort。

我可以通过几个排序,即: sort=id,名称,日期创建到这个web api中。但是在做Linq之前,我需要验证这些字符串(Id、Name、DateCreated等)存在于模型/类的属性中。我该怎么做?

代码语言:javascript
复制
[HttpGet]
[Route("api/Activities/{sort=id}/{pagenumber=1}/{pagesize=10}")]
[CacheOutput(ClientTimeSpan = 60, ServerTimeSpan = 60)]
public async Task<IHttpActionResult> GetActivities(string sort, int pageNumber, int pageSize)
{
    string userId = User.Identity.GetUserId();

    var activities = await (db.Activities.Where(q => q.UserId == userId)
                              .AsQueryable().ApplySort(sort)
                              .Skip((pageNumber - 1) * pageSize)
                              .Take(pageSize)).ToListAsync();

    return Ok(activities);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-13 13:09:33

您可以使用GetProperties():

代码语言:javascript
复制
[HttpGet]
[Route("api/Activities/{sort=id}/{pagenumber=1}/{pagesize=10}")]
[CacheOutput(ClientTimeSpan = 60, ServerTimeSpan = 60)]
public async Task<IHttpActionResult> GetActivities(string sort, int pageNumber, int pageSize)
{
    string userId = User.Identity.GetUserId();

    var propertyNames = typeof (Activity).GetProperties().Select(p=>p.Name).ToList();
    var sorts = sort.Split(',').Select(s=> s.Trim());
    foreach(var sortPart in sorts)
    {
       if(propertyNames.IndexOf(sortPart)<0)
       {
          throw//what ever should be done in error-case
       }
    }
    var activities = await (db.Activities.Where(q => q.UserId == userId)
                              .AsQueryable().ApplySort(sort)
                              .Skip((pageNumber - 1) * pageSize)
                              .Take(pageSize)).ToListAsync();

    return Ok(activities);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57917428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档