7

我使用 Metadata 和 JsonIgnore 从序列化中删除特殊字段。

[Authorize(Roles = "admin")]
public class UserController : ApiController
{
    public IEnumerable<user> Get()
    {
        using (var mydb = new ModelContainer())
        {
            return mydb.userSet.ToList();
        }
    }
}

[MetadataType(typeof(user_Metadata))]  
public partial class user
{  
    private class user_Metadata  
    {  
        [JsonIgnore]  
        public virtual password { get; set; }  

        public virtual adminFile { get; set; }  
    }  
}  

如何动态控制应序列化的字段。对于一些事情,比如

public partial class user
{  
    private class user_Metadata  
    {  
        [JsonIgnore]  
        public virtual password { get; set; }  
        [Roes == admin?JsonIgnore:JsonNotIgnore] //some thing like this
        public virtual adminFile { get; set; }  
    }  
} 
4

2 回答 2

10

条件属性序列化

于 2013-04-22T22:41:27.043 回答
0

JsonIgnore是一个不能动态设置的属性。但是您可以尝试类似的方法。

public partial class user
{  
    private class user_Metadata  
    {  
        [JsonIgnore]  
        public virtual password { get; set; }  

        //[Roes == admin?JsonIgnore:JsonNotIgnore] //something like this
        public virtual adminFile 
        { 
            get
            {
               if(Roes == admin)
                   return NULL;
               else
                   return adminFile;
            }
            set
            {
               if(Roes == admin)
                   value = NULL;
               else
                   value = adminFile;
            } 
        }  

    }  
} 

通过这种方式,您可以保存默认值而不是保存属性的实际值。

于 2013-04-22T11:51:14.570 回答