我上课了:
public class Person
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual DateTime BirthDate { get; set; }
}
我有WebAPI OData控制器:
public class PeopleController : ODataController
{
[Queryable]
[HttpGet]
public IQueryable<Person> Get()
{
return (new MyEfContext()).People;
}
}
我在global.asax中还有下一个代码:
ODataConventionModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Person>("Person");
config.Routes.MapODataRoute(
routeName: "MainModelQueryOdata",
routePrefix: "query/main",
model: modelBuilder.GetEdmModel(),
pathHandler: new DefaultODataPathHandler(),
batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer),
routingConventions: conventions);
我想从非管理员隐藏属性BirthDate,并且当前用户不是那个Person。 如何在ASP.NET WebAPI OData中更好地实现它?我有CurrentUserId与person.Id和我有CurrentUserIsAdmin标志进行比较。 问题是我无法通过modelBuilder向Odata模型添加条件,因为不支持这种行为 - 我只能为每个人完全删除实体或属性,但我需要向管理员和他们自己显示它。
答案 0 :(得分:1)