我有一个包含多列的自定义列表。验证由自定义内容类型进行。现在我希望两列的组合是唯一的。直到知道我没有找到用板载函数解决这个问题的方法,所以我的想法是使用 eventreceiver 或 customcontenttype。
我尝试了什么:
列表事件接收器
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);
}
它工作正常,但错误消息不显示为验证错误。这是一个新的错误页面。
自定义内容类型
如果我尝试在自定义内容类型中进行验证,我将无法从内容类型访问其他字段的值。所以我不能比较两个字段或检查它们是否唯一。