У меня есть обработчик событий, который ловит событие ItemAdding и меняет тип содержимого на лету. Это мой код для построения типа контента:
SPContentType baseContentType = web.AvailableContentTypes["Folder"];
SPContentType type = new SPContentType(baseContentType, web.ContentTypes, "Custom Folder");
// Add fields to new content type
AddField(ref type, "User", "Owner");
AddField(ref type, "DateTime", "Date");
AddField(ref type, "Text", "Description");
AddField(ref type, "Text", "Justification");
AddField(ref type, "User", "Users");
list.ContentTypes.Add(type);
list.Update();
.. чик ..
void AddField(ref SPContentType contentType, string fieldType, string fieldName)
{
SPField field = new SPField(contentType.Fields, fieldType, fieldName);
if (fieldName.Equals("Users"))
((SPFieldUser)field).AllowMultipleValues = true;
field.Update();
contentType.Fields.Add(field); // Exception thrown here
SPFieldLink fieldLink = new SPFieldLink(contentType.Fields[fieldName]);
contentType.FieldLinks.Add(fieldLink);
contentType.Update();
}
В строке: contentType.FieldLinks.Add (fieldLink);,
Я получаю ArgumentNullException: значение не может быть нулевым. Имя параметра: г
Кто-нибудь знает, что это значит, или может видеть, что я делаю неправильно? Заранее спасибо!
Трассировка стека:
в Microsoft.SharePoint.SPField.UpdateCore (Boolean bToggleSealed)
в Microsoft.SharePoint.SPField.Update ()
at ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.AddField (SPContentType & contentType, String fieldType, String fieldName)
в ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.ItemAdding (свойства SPItemEventProperties)