Skip to main content

ObjectViewController<ViewType, ObjectType> Class

A base class for View Controllers intended for Object Views.

Namespace: DevExpress.ExpressApp

Assembly: DevExpress.ExpressApp.v25.2.dll

NuGet Package: DevExpress.ExpressApp

Declaration

public abstract class ObjectViewController<ViewType, ObjectType> :
    ViewController<ViewType>
    where ViewType : ObjectView

Type Parameters

Name Description
ViewType

Specifies the ViewController.TargetViewType value.

ObjectType

Specifies the ViewController.TargetObjectType value

Remarks

This Controller inherist from the ObjectViewController and introduces two generic type parameters:

Parameter Description
ViewType Specifies the ViewController.TargetViewType value.
ObjectType Specifies the ViewController.TargetObjectType value.

Use this class as the base class for a custom Controller to ensure that the custom Controller is activated for a specific View type and Object type.

The following code snippet demonstrates a custom View Controller derived from the generic ObjectViewController.

using DevExpress.Blazor;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Blazor.Editors;
using MainDemo.Module.BusinessObjects;

namespace MainDemo.Blazor.Server.Controllers;

public sealed class ContactListViewController : ObjectViewController<ListView, Contact> {
    protected override void OnViewControlsCreated() {
        base.OnViewControlsCreated();
        if(View.Editor is DxGridListEditor gridListEditor) {
            // ...
        }
    }
}

Note

CodeRush allows you to add Actions and Controllers with a few keystrokes. To learn about the Code Templates for XAF, refer to the following help topic: XAF Templates.

Visual Studio designer cannot be used with generic components, so you cannot use it to design generic Controllers. As a possible workaround, you can declare an intermediate non-generic base class, derived from a generic Controller and decorated with the DesignerCategoryAttribute, and then derive your custom Controller from this intermediate class. The following code snippet illustrates this.

using System.ComponentModel;
using DevExpress.Blazor;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Blazor.Editors;
using MainDemo.Module.BusinessObjects;

namespace MainDemo.Blazor.Server.Controllers;

public abstract class MyIntermediateListViewController : ObjectViewController<ListView, Contact> {
    // ...
}

public sealed class MyViewController : MyIntermediateListViewController {
    // ...
}

Implements

See Also