properties.AfterProperties
ItemUpdating イベント レシーバーの (またはリスト アイテム)からユーザー フィールド値を読み取り、SPUser
(または少なくともSPFieldUserValue
) オブジェクトを取得したいので、試してみました。
var fldValue = properties.AfterProperties[fldName] ?? properties.ListItem[fldName];
result = (SPFieldUserValue)fldValue;
string
からにキャストできないという例外が通知されましたSPFieldUserValue
。デバッグにより、フィールド値の型が文字列であることを確認しました。
この場合、ユーザー フィールドはType="User"
リスト スキーマのように宣言され、同じリスト内の他のユーザー フィールドは次のように宣言されType="UserMulti"
、フィールド値の型はSPFieldUserValueCollection
... です。
これがsharepointが一般的にユーザーフィールドを処理する方法なのか、それとも不適切に構成されたvmの単なるバグなのかを知りたいですか? シングル ユーザー フィールドとマルチ ユーザー フィールドを別々に処理することはそれほど悪くないので、フィールド値にこれらのタイプを使用できるかどうかを知る必要があるだけです: シングル ユーザー フィールド -> 文字列およびマルチ ユーザー フィールド -> SPFieldUserValueCollection?