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 {
// ...
}