Ich habe zwei ähnliche Probleme, von denen ich vermute, dass sie eine gemeinsame Lösung haben.Wie fügen Sie Inhaltsteile nur bestimmten Typen oder bestimmten Inhaltselementen an?
1) Ich möchte benutzerdefinierte Teile erstellen, die angeschlossen werden können, aber nur für bestimmte Inhaltstypen, nur zum Beispiel Taxonomien. Es wäre wirklich cool, wenn das durch Migrationen möglich wäre, so etwas wie .Attachable(cfg => cfg.ToType("Taxonomy"))
, aber ich glaube nicht, dass es so ist.
Derzeit zu meinem benutzerdefinierten Teil zu verhindern, dass auf Inhalt verwendet wird, dass es nicht bei beabsichtigter ist, ich schreibe Kontrollen nur in den Treiber-Methoden:
protected override DriverResult Editor(CustomPart part, dynamic shapeHelper)
{
if (part.ContentItem.ContentType != "Taxonomy") return null;
return ContentShape("Parts_Custom_Edit", ...
}
Ist dies ein guter Weg, um darüber zu gehen? Wäre der Handler besser für diese Logik geeignet?
2) In ähnlicher Weise möchte ich in der Lage sein, verschiedene Teile an verschiedene einzelne Content Items bedingt anzuhängen. Zum Beispiel möchte ich nur Elternteile der ersten Ebene in einer Taxonomie haben einige Felder, während Kind Bedingungen einige andere haben.
Der beste Weg, den ich zur Zeit damit kommen kann, besteht darin, nur einen Teil zu erstellen, der alle Felder enthält und in den Driver-Methoden ähnliche Überprüfungen durchführt, um abhängig vom Container unterschiedliche Modelle zurückzugeben. Dann in der Vorlage Ansicht prüfe ich, welche machen Felder:
@if (Model.ThisField != null) {
<div>@Html.EditorFor(m => m.ThisField)</div>
}
else {
<div>@Html.EditorFor(m => m.ThatField)</div>
}
Im Idealfall würde Ich mag einen aufsteckbaren Teil erstellen, die die Zugabe von mehrer nicht aufsteckbaren Sekundärteilen an vorhandenen Inhaltselementen der Lage ist, wenn es auf eine Art angebracht ist, und zu neuen Inhaltselementen, wenn sie erstellt oder aktualisiert werden. Gibt es einen schmerzlosen Weg, dies zu tun? Ich denke, "Schweißen" könnte das sein, was ich brauche, aber ich konnte keine Dokumentation oder Anleitungen finden, die mir das Schweißen erklären könnten, als wäre ich fünf.
Möchten Sie, dass ** Sie ** an bestimmte Typen anhängen können, oder ** immer ** an bestimmte Typen angehängt sind – devqon
Ich möchte ** fähig ** sein. Ansonsten könnte ich sie unattachbar machen und sie bei der Migration anhängen. Im Falle der Anknüpfung an bestimmte Content Items muss ich allerdings sagen, dass dies immer programmatisch geschehen muss. – Lawyerson
Ich muss Ihr Problem später noch einmal lesen, aber von dem, was Sie beschreiben, denke ich, ist der beste Weg, dies zu tun, die Teile im Content-Handler zu verschweißen. Sie haben Recht, wenn es um Dokumente über Schweißen geht, ich schlage vor, Sie nur Schritt durch die Weld() -Methode, um herauszufinden, wie es funktioniert, es ist nur ein paar Zeilen. –
Xceno