【发布时间】:2020-10-25 19:47:55
【问题描述】:
Mvc Core 的默认“下载个人数据”操作会这样创建一个带有个人数据的 json
var personalData = new Dictionary<string, string>();
var personalDataProps = typeof(IdentityUser).GetProperties().Where(
prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute)));
并序列化personalData字典
foreach (var p in personalDataProps)
personalData.Add(p.Name, p.GetValue(user)?.ToString() ?? "null");
为了扩展Identity User 属性,我创建了第二个UserData 表,其中包含one to one relationship,就像这样
public class UserData
{
[Key, ForeignKey("IdentityUser")]
public string UserId { get; set; }
public IdentityUser IdentityUser { get; set; }
[PersonalData]
public string CompanyName { get; set; }
[PersonalData]
public string WebSite { get; set; }
}
如何将UserData 的属性添加到personalData 字典中?
我已经尝试了以下
var userDataProps = typeof(Models.UserData).GetProperties().Where(
prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute)));
foreach (var p in userDataProps)
personalData.Add(p.Name, p.GetValue(user)?.ToString() ?? "null");
但我在最后一行得到TargetException: Object does not match target type.。
【问题讨论】:
-
你是如何定义
user的?这个错误信息表示user中的数据与UserData不匹配。
标签: c# asp.net-core-mvc asp.net-core-3.1