Dialoge arbeiten nun in der Implementierung nur noch mit Controls, nicht mehr mit MVCxLayoutItems. Diese werden vom Framework aus der Control-Liste erzeugt.

Das bedeutet, dass die Erstellung einer MVCxFormLayoutItemCollection per DevExFormLayoutTranslator.Translate in jedem Fall entfällt.

Daraus resultierend entfällt ebenfalls die Erstellung und Zuweisung eines DevExFormPartModels (formModel.LayoutPanels.Add) und das Setzen eines Layouts (formModel.LayoutName).
Ebenfalls überflüssig ist der Aufruf auf request.ConfigurationId(...).

Zuweisungen von formModel.FormGuid und formModel.FormInDialog müssen (sollten) entfernt werden. Dieser Wert wird später überschrieben und die Zuweisung ist überflüssig.

Die Methode HandleAction bleibt unverändert.

Zwei weitere Methoden können nun überschrieben werden, um in abgeleiteten Dialogen Änderungen an den erstellten Controls und an den erstellten MVCxFormLayoutItems zu machen:

void AfterContentCreated(DevExFormModel formModel, HttpRequestBase request, ModelStateDictionary modelState, Dictionary<string, object> parameter, object bindObject)

Abfolge ist:

  1. CreateDialogContent
  2. Übernahme von formModel.DataSource als bindObject
  3. AfterContentCreated

Das bedeutet, dass man in AfterContentCreated Änderungen an this.Controls durchführen kann, bevor die Controls in MVCx-Items umgewandelt werden.

Theoretisch erfüllt ein Überschreiben von CreateDialogContent mit Aufruf von base.CreateDialogContent den gleichen Zweck, man spart sich bei der Verwendung von AfterContentCreated allerdings, dass man an den base-Aufruf denken muss, d.h. AfterContentCreated ist die offizielle Schnittstelle, um Änderungen an den vom Dialog erstellten Controls zu machen.

void AfterControlsRendered(DevExFormModel formModel, HttpRequestBase request)

Hier können Änderungen an den umgewandelten MVCx-Items gemacht werden.

Diese finden sich unter formModel.LayoutPanels (Liste von DevExFormPartModel) und sind nach ihrer Hierarchie angeordnet (d.h. wenn man nicht weiß, nach was man wo sucht, muss man wahrscheinlich zunächst FlattenControls bemühen müssen).