1

以前に聞いたことがありますが、満足のいく回答が得られなかったため、復活させています。

プロファイル変数があり、それをロードすると、デフォルト値が割り当てられます。割り当てられたことがあるかどうかを確認する必要があります。通常、私はnull比較を使用しますが、それは機能しません。

逆に見えるFindProfilesByUserNameを使用することをお勧めしました。とにかく、この方法は、ユーザーがプロファイルを作成したかどうかだけを教えてくれますが、興味のある特定のメンバーデータについては教えてくれないので機能しません(プロファイルの全体的な目的は、現在のプロファイルに簡単にアクセスできるようにすることだったので、逆に見えますユーザープロファイルデータ。何かが足りない場合を除いて、これは悪いデザインのようです。)

私が見ることができる最後のオプションは、すべてのオブジェクトにビットを割り当てて、それらが汚れているか設定されているかを確認することです。ただし、必要な場合を除いて、これは実行したくありません。

これがFindProfilesByUserNameのサンプルです:

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

私が持っていた最後のアイデアは、コレクションがnull許容であることを読んだと思うので、コレクションを保存することです。私の場合、コレクションは本当に必要ありませんが、それが最も簡単な解決策かもしれません。提案を楽しみにしています。私はこの問題に関して明らかな何かを見逃しているに違いないと感じています。

明確にするために

これは機能しません(http.context.profile.mydata!= nullの場合)

4

2 に答える 2

0

わかりました、誰もこの問題を経験していないことに驚いています: 基本的な何かが欠けていると思います. グループとグループのダーティ フラグを追加します。誰かが別の解決策を提供できる場合は、その答えを認めます。または、オブジェクトへの汚れたフラグ..

于 2010-07-08T19:13:34.687 に答える
0

を表すデフォルト値を設定するだけですnull。たとえば、int フィールドの場合、デフォルトを -1 に設定します。

あなたが説明している要件は、私の意見では、エッジケースであり、いずれにしても上記の戦略を使用して簡単に満たすことができます。

それがプロファイルモデルの見落としまたは欠点であるというあなたの主張は時期尚早だと思います。

幸運を。

于 2010-07-18T00:47:18.003 に答える