Eine Klasse kann verschiedene Aktionen beinhalten welche im Kontext der Entität ausgeführt werden können.
Die Konfiguration ist dabei analog einem normalen Property mit einigen zusätzlichen Möglichkeiten:
Zuweisen der Aktion die ausgeführt werden soll inklusive Rückgabewert
Definition wie die Aktion angezeigt werden soll (in Listen, Detail etc.)
Die Builder Methode sieht wie folgt aus:
Builder.Add.Action(...) ClassBuilder.Add.Action(...)
Um einen Body zuzuweisen stehen folgende Overloads zur Verfügung:
Methode | Beschreibung |
---|---|
| Der |
| Direkte Zuweisung eines Delegate. Die Signatur der Methode muss dabei einen Parameter vom Typ |
| Der |
Die generische Methode um eine Aktion direkt mit den MetaActionEventArgs
auszuführen steht ebenfalls zur Verfügung. Es wird aber davon abgeraten diese zu verwenden. Die Abkapslung in Services erhöht die Testbarkeit der jeweiligen Aktionen und verhindert das Business-Logik direkt in die Builders geschrieben wird.
Jede Aktion kann definieren welche Änderungen sie vorgenommen hat und drückt diese über den Rückgabetyp aus.
Rückgabetyp | Beschreibung |
---|---|
| Keine Änderungen. Die Daten im Client werden nicht neu geladen. |
| Das aufgerufene Objekt muss neu geladen werden. |
| Das aufgerufene und alle verlinkten Objekte müssen neu geladen werden. |
Als optionaler Parameter kann bei allen Methoden folgendes definiert werden:
Parameter | Beschreibung |
---|---|
| Kann definieren ob die Aktion erfolgreich war:
|
| Meldung die dem Benutzer angezeigt wird. |
Soll zusätzlich zur Rückmeldung noch eine Navigation erfolgen so kann die Klasse NavigationLinkActionResult
verwendet werden. Der NavigationLinkAspect
muss dabei als Parameter zur Verfügung gestellt werden.
Aktionen mit Parameter
Einige Aktionen erfordern eine Eingabe um erfolgreich ausgeführt werden zu können.
Um eine Aktion mit Parametern auszustatten stehen dieselben Methoden wie oben beschrieben zur Verfügung mit der Ergänzung eines zusätzlichen Type-Argument welches den Parameter-Typ identifiziert.
Methode | Beschreibung |
---|---|
| Der |
| Direkte Zuweisung eines Delegate. Die Signatur der Methode muss dabei einen Parameter vom Typ |
| Der |
Der Parameter für die Aktion wird im Client über ein Popup abgefragt und danach an die entsprechende Aktion weitergeleitet. Es stehen dieselben Rückgabetypen wie bei einer normalen Aktion zur Verfügung.
Aktionen mit Bestätigung
Aktionen können optional eine Bestätigung des Benutzers einholen. Dies ist hilfreich wenn eine Aktion potentiell schwerwiegende Konsequenzen haben könnte.
Das folgende Snippet fragt nach der Bestätigung des Benutzers bevor die Aktion ausgeführt wird:
builder.Get.Class(nameof(elements.Person)).Add.Action("TestActionWithConfirmation") .RequiresConfirmation() .Content(German, "Inhalt") .Title(German, "Titel") .ContinueCaption(German, "Weiter") .CancelCaption(German, "Abbrechen");
Die Captions sind optional. Wird nichts angegeben werden die Standard-Übersetzungen verwendet.
Platzierung von Aktionen
Für die Platzierung von Aktionen in einer Listen- und Detail-Ansicht, es gibt drei Möglichkeiten:
Selektions Aktion: Buttons die erscheinen, wenn man mehrere elemente in einer Liste angewählt hat.
Aktion anzeigen in einer Liste bzw in einer Reihe.
Aktion wird in einer Reihe neben dem TrashButton über die drei punkte angezeigt und wird auf einem Klick aufgerufen.
Listen-Ansichten
Bei den Listen Ansichten - ListLayout kann man die Aktionen über die Methode SetListAction()
anhängen:
SetListAction( [NotNull] this T element, bool showInListSelection = true, bool showInListRow = true, bool isOverflowByDefault = false)
list.Add.Link(metadata.Person.LowerCaseNameListAction) .Element.SetListAction(true, true, true);
Detail-Ansichten
Bei der Detail ansicht - DetailLayout gib es ebenfalls drei Möglichkeiten um die Aktion zu platzieren:
Als eine Standard Aktion in der Sidebar.
In den Inhalt der Detail Ansicht.
Es besteht die Möglichkeit ebenfalls die Aktion als Primäre oder Sekundäre Aktion anzuzeigen.
Eine Standard Aktion in der Sidebar zu implementieren muss folgendes vorgehen eingehalten werden:
1. Es wir eine Variable als Actions deklariert und wird und die Sidebar Funktion wird dem Layout angehängt.
var sidebar = elements.Person.Add.Sidebar()
1.1 Anschliessend wir der Sidebar eine Aktion angehängt und über die Add.Action
Methode die entsprechende Aktion aufgerufen.
var actions = sidebar.Add.Actions(); actions.Add.Action(metadata.Person.LowerCaseNameDetailAction);
1.2 Um eine Aktion in den Detail Ansicht Inhalt platzieren zu können, muss man folgendes implementieren im folgenden Beispiel werden wir die Aktion in einer Reihe integrieren:
row.Add.Link(metadata.Person.LowerCaseNameDetailAction);
In dem beiden Fällen is es möglich die Art de Aktion zu steuern ob es sich um eine Primäre Aktion oder als eine Sekundäre Aktion handelt. Die Methode IsClassAction beinhaltet drei Parameter durch die die Optionen der Aktion gesteuert werden können.showAsMainAction
: Zeige es an als eine HauptaktionshowAtStartOfGroup
: Zeige es am Anfang der Gruppe von den AktionenisPrimary:
Ist es eine Primäre Aktion hierdruch wird das Styling der Aktion geändert.
bool showAsMainAction = false, bool showAtStartOfGroup = false, bool isPrimary = false)
Elements.Controls.Add.Action("SampleAction").IsClassAction(true, true, true)
Die SampleAction ist in diesem Beispiel eine HauptAktion, ist die erste Aktion in der Gruppe von Aktionen, und ist eine Primäre Aktion hierdurch wird das Styling angepasst.