How do I go about saving a block programmatically? I though it would be the same way as saving a page but I get: Argument type 'EPiServer.Core.BlockData' is not assinable to parameter type 'EPiServer.Core.IContent'
My code looks like this:
var widget =
.Get(contentAreaItem.ContentLink) as MyBaseBlock;
var clone = widget.CreateWritableClone();
clone.MyProperty = "SomeValue";
contentRepository.Save(clone, SaveAction.Publish, AccessLevel.Administer);
For the Save mthod simply cast your clone object as IContent.
contentRepository.Save( (IContent)clone, SaveAction.Publish, AccessLevel.Administer);
The reason for this is because a BlockData can either be a shared block (IContent) or a local block (a set of properties on a page). So you need to tell EPiServer that this block is actually a IContent.
Joel Abrahamsson have a great article about the the differences.
Ok wouldn't it be better to have an overload that accepts blockdata then? :)