Ich habe einen Inhaltsbereich, die einige Blöcke haben, müssen einige Attribute dieser Blöcke mit Daten aus einer SQL-Abfrage initialisiert werden, so in der Steuerung ich so etwas wie dieses:EpiServer - Hinzufügen Block zu einem Inhaltsbereich programmatisch
foreach (ObjectType item in MyList)
{
BlockData currentObject = new BlockData
{
BlockDataProperty1 = item.ItemProperty1,
BlockDataProperty2 = item.ItemProperty2
};
/*Dont know what to do here*/
}
Was ich brauche, ist mit currentObject
als Block arbeiten, und fügen Sie es zu einem Inhaltsbereich, den ich in einem anderen Block definiert habe. Ich habe versucht,
myContentArea.Add(currentObject)
verwenden, aber es sagt, es ist nicht ein Objekt in einen Inhaltsbereich hinzufügen kann, weil es für einen IContent
Typ erwartet.
Wie kann ich dieses Objekt in eine IContent
?
Danke für die Antwort, Es scheint wie es funktioniert, aber immer noch ein Problem, die Linie Repo.Save (newBlock, SaveAction.Publish); markiert einen Fehler, der besagt, dass die beste Überladung für Speichern einige ungültige Argumente hat, bereits versucht repo.Save (newBlock, SaveAction.Publish, AccessLevel.Administrator); und auch IContentRepository.Save (Repo, newBlock, saveAction.Publish) – rhernandez
Ja, sieht aus wie das gleiche 'IContent'-Cast-Problem. Versuchen Sie 'repo.Save ((IContent) newBlock, SaveAction.Publish);' – whyleee
Es funktioniert! Jetzt werden die Daten als Block angezeigt und editierbare Eigenschaften funktionieren einwandfrei. Nur eine weitere Frage (ich bin nicht sicher, ob ich einen anderen Thread öffnen würde) Die Blöcke werden korrekt hinzugefügt, aber wenn ich zur übergeordneten Komponente gehe, sieht die ContentArea leer aus, also habe ich überprüft und festgestellt, dass die Blöcke hinzugefügt werden Wie kann ich der Komponente, die im Bearbeitungsmodus angezeigt werden soll, im Ordner "Global Assests" "sagen"? Ich versuche mit dieser Lösung http://joelabrahamsson.com/custom-rendering-of-content-areas/, funktioniert aber bisher nicht für mich. Danke – rhernandez