2010-07-08 41 views
1

我已经问过这个,但我正在复活它,因为我没有得到满意的答复。如何确定是否曾经设置过配置文件数据成员?

我有一个配置文件变量,当我加载它时,它被分配默认值。我需要检查是否曾经分配过。通常我会使用一个为空的比较,但不会工作。

有人建议我使用FindProfilesByUserName这看起来倒退。无论这种方法不会工作,因为它只告诉我用户是否创建了任何配置文件,但不会为我感兴趣的特定成员数据。(这似乎是倒退,因为配置文件的整个目的是为了方便访问当前的用户配置文件数据,这似乎是一个糟糕的设计,除非我错过了某些东西)

我看到的最后一个选项是将位分配给每个对象,看它们是否被弄脏或设置。我不想这样做,除非需要。

这里是FindProfilesByUserName样本:

ProfileInfoCollection profileInfo = ProfileManager.FindProfilesByUserName(ProfileAuthenticationOption.All, Membership.GetUser().UserName); 
     if (profileInfo.Count > 0) 
     { 
      if (profileInfo[Membership.GetUser().UserName] != null) 

最后一个想法我已经是存储集合,因为我觉得我读过他们是空。在我的情况下,我并不需要一个集合,但这可能是最简单的解决方案。期待建议..我觉得我必须在这件事上失去一些明显的东西。

要清楚

这不起作用(如果http.context.profile.mydata!= NULL)

+2

你能否指出另一篇文章?这可能有助于避免类似的,显然不令人满意的答案。 – XIII 2010-07-08 18:29:29

+0

http://stackoverflow.com/questions/3169164/profiles-content-check-if-set – 2010-07-08 19:01:32

回答

0

好吧,我很惊讶,没有人遇到过这个问题:让我想到我缺少一些基本的东西。我将为该组添加一个组和一个脏标志。如果任何人都可以提供另一种解决方案,我会给出答案的功劳。或对象脏污。

0

只需设置代表null的默认值即可。例如对于int字段,将缺省值设置为-1。

在我看来,您所描述的要求是一个边缘案例,无论如何都可以使用上述策略轻松实现。

我认为,你认为这是一个简介模型的疏忽或缺点是不成熟的。

祝你好运。

+0

这是一个相当大的疏忽,因为它强制要存储任何对象/类的非必要模型。当然,有修复。 – 2010-07-19 14:30:01

相关问题