複数の列を含むカスタム リストがあります。検証は、カスタム 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 つのフィールドを比較したり、それらが一意であることを確認したりすることはできません。