我使用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; }
}
}
答案 0 :(得分:10)
答案 1 :(得分: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;
}
}
}
}
通过这种方式,您可以保存默认值,而不是保存属性的实际值。