1

複数の列を含むカスタム リストがあります。検証は、カスタム contenttype によって行われます。ここで、2 つの列の組み合わせを一意にする必要があります。この問題をオンボード関数で解決する方法が見つからなかったので、eventreceiver または customcontenttype を使用することを考えました。

私が試したこと:

ListEventReceiver

public override void ItemAdding(SPItemEventProperties properties)
       {

           if (properties.AfterProperties["a1"].ToString() == properties.AfterProperties["a2"].ToString())
           {
               properties.Status = SPEventReceiverStatus.CancelWithError;
               properties.Cancel = true;
               properties.ErrorMessage = "Failure";
           }
           base.ItemAdding(properties);
       }

正常に動作しますが、エラー メッセージは検証エラーとして表示されません。新しいエラーページです。 ここに画像の説明を入力

カスタムコンテンツタイプ

カスタム contenttype で検証しようとすると、contenttype から他のフィールドの値にアクセスできません。そのため、2 つのフィールドを比較したり、それらが一意であることを確認したりすることはできません。

4

1 に答える 1