Creating content by code

Topics: Writing modules
Mar 8, 2013 at 10:25 AM
Edited Mar 8, 2013 at 10:26 AM
Hi,

I am trying to write a content item programmatically.

The content type has been created in the dashbord. it is called "SampleContentType" and has one text field called "Name".

I've performed the following in my module :
public class SampleContentTypePart : ContentPart<SampleContentTypePartRecord>
    {
        [Required]
        public string Name
        {
            get { return Record.Name; }
            set { Record.Name = value; }
        }

    }

    public class SampleContentTypePartRecord : ContentPartRecord
    {
        public virtual string Name { get; set; }

    }

    public class SampleContentTypetPartDriver : ContentPartDriver<SampleContentTypePart>
    {


    }

    public class SampleContentTypePartHandler : ContentHandler
    {
    }
to create the item : I created this method :
 var customPart = _contentManager.New<SampleContentTypePart>("SampleContentType");

            customPart.As<TitlePart>().Title = "zzz";
            customPart.Record.Name = "hhh";

            _contentManager.Create(customPart);
But i'm getting "InvalidCastException.

What's wrong please ?
Developer
Mar 8, 2013 at 11:28 AM
Did you attach the TitlePart to the SampleContentType?
Mar 8, 2013 at 11:34 AM
Yes,

When I try to create the content type and assign only the TitlePart it works !

But when I try to assign values to my own values, it is generating invalidcastexception or NullReferenceException.

I am running 1.6 version
Developer
Mar 8, 2013 at 11:57 AM
Did you add a StorageFilter from your handler? From looking at the code you pasted above, it appears you haven't.
Mar 8, 2013 at 1:14 PM
In the constructor, I am doing this :
public SampleContentTypePartHandler(IRepository<SampleContentTypePartRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
    }
But I still get an InvalidCastException
Developer
Mar 15, 2013 at 8:51 PM
Then I don't know, sorry.
Coordinator
Mar 15, 2013 at 10:54 PM
Attach a debugger and take a closer look at this exception. The error message is actually giving you the two types it can't cast (the actual one and the expected one). It would help to give that information.