public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <Core.Common.DomainTypes.Language, LanguageAdminService>(builder => { var gridBuilder = builder.GridBuilder; var formBuilder = builder.FormBuilder; gridBuilder.Title = "Languages"; formBuilder.Title = "Language"; gridBuilder .AddKeyField(r => r.CultureCode) .AddField(r => r.EnglishName, option => option.DisplayName = "English Name") .AddField(r => r.NativeName, option => option.DisplayName = "Native Name") .AddField(r => r.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); gridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); formBuilder .AddField(l => l.EnglishName, option => { option.DisplayName = "English Name"; option.ShowIn = FormMode.Update; option.IsReadOnly = true; }) .AddField(l => l.NativeName, option => { option.DisplayName = "Native Name"; option.ShowIn = FormMode.Update; option.IsReadOnly = true; }) .AddField(l => l.CultureCode, option => { option.DisplayName = "Culture Code"; option.ShowIn = FormMode.Update; option.IsReadOnly = true; }) .AddSelectField(l => l.SelectedLanguage, null, option => { option.DisplayName = "Select Language"; option.ShowIn = FormMode.Create; }); formBuilder.AddField(l => l.IsActive); formBuilder.Property(l => l.IsActive).EnableOn(l => l.CultureCode != "en-US"); formBuilder.Property(l => l.SelectedLanguage).HasLookup( sp => sp.GetService <LanguageAdminService>().GetAllLanguages(), language => language.CultureCode, language => language.EnglishName); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <User>(modelBuilder => { modelBuilder.FormBuilder .AddField(u => u.FirstName).AddInlineField(u => u.LastName); modelBuilder.FormBuilder .AddFieldSet("General", fieldBuilder => fieldBuilder.AddField(s => s.FirstName).AddInlineField(s => s.LastName) ); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <Role, SecurityRoleAdminService>(modelBuilderAction: builder => { var gridBuilder = builder.GridBuilder; var formBuilder = builder.FormBuilder; gridBuilder.Title = "Security Roles"; formBuilder.Title = "Role"; gridBuilder .AddKeyField(r => r.Id) .AddField(r => r.Name, option => option.DisplayName = "Role Name"); formBuilder .AddField(l => l.Name, option => { option.DisplayName = "Role Name"; }); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <Employee, EmployeeAdminService>(modelBuilder => { modelBuilder.GridBuilder.Title = "Employee"; modelBuilder.FormBuilder.Title = "Employee Details"; modelBuilder.GridBuilder .AddField(c => c.Name) .AddField(c => c.Designation) .AddField(c => c.Email) .AddField(c => c.Nationality) .AddField(c => c.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(c => c.Designation) .AddField(c => c.Email, option => option.ValidationType = ValidationType.Email) .AddField(c => c.IsActive) .AddSelectField(c => c.Nationality); modelBuilder.FormBuilder.Property(c => c.Nationality).HasLookup(sp => sp.GetService <EmployeeAdminService>().GetCountries(), ke => ke.Code, de => de.Name); }); adminBuilder.RegisterGrid <Customer, CustomerAdminGridService>(builder => { builder.Title = "Customers"; builder .AddKeyField(c => c.Id) .AddField(c => c.OrderId) .AddField(c => c.Name) .AddField(c => c.Email) .AddField(c => c.OrderDate) .AddField(c => c.OrderStatus) .AddField(c => c.ShipDate) .AddField(c => c.ShipCountry); builder.Property(c => c.ShipCountry).HasLookup(sp => sp.GetService <EmployeeAdminService>().GetCountries(), ke => ke.Code, de => de.Name); builder.Property(c => c.OrderStatus).HasLookup(sp => OrderStatus.OrderStatuses, ke => ke.Id, de => de.Name); builder.DisplayFieldAs(c => c.OrderStatus, LabelType.Badge, c => c.OrderStatusClass); builder.AddRowAction("MarkAsDelivered", "Mark As Delivered", (provider, item) => provider.GetService <CustomerAdminGridService>().MarkDelivered(item)); builder.HideEditButton(); }); adminBuilder.RegisterForm <Guest, EventFormService>(builder => { builder .AddFieldSet("General", fieldBuilder => { fieldBuilder .AddKeyField(c => c.Id) .AddField(p => p.Name) .AddSelectField(p => p.Gender) .AddField(p => p.Email, option => option.ValidationType = ValidationType.Email); }) .AddFieldSet("Dietary requirements", fieldBuilder => { fieldBuilder .AddField(p => p.IsTakePartInDinner) .AddSelectField(p => p.FoodType); }); builder.Property(f => f.FoodType) .ShowOn(f => f.IsTakePartInDinner) .ValidateOn(f => f.IsTakePartInDinner); builder.Property(f => f.Gender).HasLookup( sp => Gender.Genders, ke => ke.Id, de => de.Name); builder.Property(f => f.FoodType).HasLookup( sp => FoodType.FoodTypes, ke => ke.Id, de => de.Name); }); adminBuilder.RegisterTreeAndForm <Folder, FolderAdminService>(builder => { builder.TreeBuilder.Title = "File Manager"; builder.FormBuilder.Title = "File Manager"; builder.TreeBuilder.ConfigureTree(p => p.Id, p => p.Name, p => p.Parent, p => p.SubFolders, p => p.SortOrder); var formBuilder = builder.FormBuilder; var adminId = Guid.Parse("5308b86c-a2fc-4220-8ba2-47e7bec1938d"); var urlId = Guid.Parse("bfefa535-7af1-4ddc-82c0-c906c948367a"); var standardId = Guid.Parse("4c06dcfd-214f-45af-8404-ff84b412ab01"); formBuilder .AddFieldSet("General", fieldBuilder => { fieldBuilder .AddField(p => p.Name); }) .AddFieldSet("Permissions", fieldBuilder => { fieldBuilder.AddCheckBoxMatrix(p => p.PagePermissions, p => p.RoleId, p => p.PermissionId, p => p.Id, p => p.FolderId, typeof(Role), typeof(Permission), option => option.IsRequired = false); }); formBuilder.Property(f => f.PagePermissions).HasMatrixLookup <Role, Permission, Guid>( sp => sp.GetService <IRoleRepository>().GetRoles(), ke => ke.Id, de => de.Name, sp => sp.GetService <IPermissionRepository>().GetPagePermissions(), ke => ke.Id, de => de.Name); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <Module, ModuleAdminService>(modelBuilder => { modelBuilder.GridBuilder.Title = "Modules"; modelBuilder.FormBuilder.Title = "Module"; modelBuilder.GridBuilder .AddField(c => c.Label) .AddField(c => c.Name) .AddField(c => c.Version) .AddField(c => c.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.Label) .AddField(c => c.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(c => c.IsActive) .AddField(c => c.Description) .AddField(c => c.Version); modelBuilder.AddChildConfig(s => s.ModuleView, (childForm) => { childForm.GridBuilder .AddField(c => c.DisplayName); childForm.GridBuilder.DisplayFieldAs(c => c.DisplayName, LabelType.Icon, c => c.IconClass); childForm.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.DisplayName, option => option.EnableIn = FormMode.Create) .AddSelectField(c => c.ModuleViewType, de => de.ControlType) .AddField(c => c.ControllerName) .AddField(c => c.ControllerNamespace) .AddField(c => c.ActionName) .AddField(c => c.IconClass) .AddField(c => c.IconImage) .AddField(c => c.IsDefault) .AddMultiselectField(c => c.Properties, c => $"{c.Label} ({c.Name})"); childForm.FormBuilder.Property(u => u.ModuleViewType).HasLookup(sp => sp.GetService <ModuleAdminService>().GetActionType(), ke => ke.Id, de => de.ControlType); childForm.FormBuilder.Property(c => c.Properties).HasLookup(sp => sp.GetService <ModuleAdminService>().GetProperties(), ke => ke.Id, de => $"{de.Label} ({de.Name})"); }); modelBuilder.FormBuilder.SetCustomValidationFor(c => c.Name, (sp, moduleName) => sp.GetService <ModuleAdminService>().ValidateModuleName(moduleName)); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <ContentType, ContentTypeAdminService>(modelBuilder => { modelBuilder.GridBuilder.Title = "Content Types"; modelBuilder.FormBuilder.Title = "Content Type"; modelBuilder.GridBuilder .AddField(c => c.Label) .AddField(c => c.Name) .AddField(c => c.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(c => c.Label, LabelType.Icon, c => c.IconClass); modelBuilder.GridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.Label) .AddField(c => c.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(c => c.IconClass, option => option.DisplayName = "Icon") .AddField(c => c.IsActive, option => option.DisplayName = "Is Active") .AddField(c => c.IsList, option => option.DisplayName = "Is List") .AddMultiselectField(c => c.Properties, c => $"{c.Label} ({c.Name})"); modelBuilder.AddChildConfig(c => c.ContentTypeFields, (childForm) => { childForm.GridBuilder .AddField(c => c.FieldName, option => option.DisplayName = "Field Name") .AddField(c => c.FieldLabel, option => option.DisplayName = "Field Label") .AddField(c => c.ContentFieldTypeName, option => option.DisplayName = "Field Type") .AddField(c => c.IsShownOnList, option => option.DisplayName = "Is Shown On List") .AddField(c => c.IsShownOnPreview, option => option.DisplayName = "Is Shown On Preview") .EnableSortingBy(c => c.SortOrder, (provider, pageNo, pageSize, contentTypes) => provider.GetService <ContentTypeAdminService>().SortContentType(pageNo, pageSize, contentTypes)); childForm.FormBuilder .AddKeyField(c => c.Id) .AddSelectField(c => c.ContentFieldType, c => c.Label) .AddField(c => c.FieldName, option => option.DisplayName = "Field Name") .AddField(c => c.FieldLabel, option => option.DisplayName = "Field Label") .AddField(c => c.FieldDescription, option => option.DisplayName = "Field Description") .AddField(c => c.IsShownOnList, option => option.DisplayName = "Is Shown On List") .AddField(c => c.IsShownOnPreview, option => option.DisplayName = "Is Shown On Preview"); childForm.FormBuilder .Property(u => u.ContentFieldType) .HasLookup(sp => sp.GetService <IContentTypeRepository>().GetContentFieldTypes(), ke => ke.Id, de => de.Label); }); modelBuilder.FormBuilder.Property(c => c.Properties).HasLookup(sp => sp.GetService <ContentTypeAdminService>().GetProperties(), ke => ke.Id, de => $"{de.Label} ({de.Name})"); modelBuilder.FormBuilder.SetCustomValidationFor(c => c.Name, (sp, contentTypeName) => sp.GetService <ContentTypeAdminService>().ValidateContentTypeName(contentTypeName)); }); adminBuilder.Register <LayoutType, LayoutTypeAdminService>(modelBuilder => { modelBuilder.AdminTitle = "Layout Type"; modelBuilder.GridBuilder .AddField(l => l.Label) .AddField(l => l.Name) .AddField(l => l.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(l => l.Label, LabelType.Icon, l => l.IconClass); modelBuilder.GridBuilder.DisplayFieldAs(l => l.IsActive, LabelType.Badge, l => l.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(l => l.Id) .AddField(l => l.Label) .AddField(l => l.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(l => l.IconClass) .AddField(l => l.IsActive) .AddMultiselectField(l => l.AllowedLayoutTypes) .AddMultiselectField(l => l.Properties, c => $"{c.Label} ({c.Name})"); modelBuilder.FormBuilder.Property(l => l.AllowedLayoutTypes).HasLookup(sp => sp.GetService <LayoutTypeAdminService>().GetLayoutTypes(), ke => ke.Id, de => $"{de.Label} ({de.Name})"); modelBuilder.FormBuilder.Property(l => l.Properties).HasLookup(sp => sp.GetService <LayoutTypeAdminService>().GetProperties(), ke => ke.Id, de => $"{de.Label} ({de.Name})"); modelBuilder.FormBuilder.SetCustomValidationFor(l => l.Name, (sp, layoutTypeName) => sp.GetService <LayoutTypeAdminService>().ValidateLayoutTypeName(layoutTypeName)); }); adminBuilder.Register <Property, PropertyAdminService>(modelBuilder => { modelBuilder.AdminTitle = "Properties"; modelBuilder.GridBuilder .AddField(p => p.Label) .AddField(p => p.Name) .AddField(p => p.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Label) .AddField(p => p.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(p => p.Description, option => { option.FieldType = FieldType.TextArea; }) .AddField(p => p.IsActive) .AddField(p => p.IsMoreOption) .AddField(p => p.DefaultValue, option => { option.IsRequired = false; }) .AddSelectField(p => p.OptionList, p => p.Label, option => { option.IsRequired = false; }) .AddSelectField(p => p.DefaultValuePropertyOption, p => p.Label, option => { option.IsRequired = false; }); modelBuilder.FormBuilder.Property(p => p.DefaultValue) .ShowOn(p => !p.IsMoreOption) .ValidateOn(p => !p.IsMoreOption); modelBuilder.FormBuilder.Property(p => p.OptionList) .ShowOn(p => p.IsMoreOption) .ValidateOn(p => p.IsMoreOption); modelBuilder.FormBuilder.Property(p => p.DefaultValuePropertyOption) .ShowOn(p => p.IsMoreOption) .ValidateOn(p => p.IsMoreOption); modelBuilder.FormBuilder.Property(p => p.OptionList).HasLookup(sp => sp.GetService <PropertyAdminService>().GetOptionList(), ke => ke.Id, de => $"{de.Label}"); modelBuilder.FormBuilder.Property(p => p.DefaultValuePropertyOption).HasLookup((sp, filterParam) => sp.GetService <PropertyAdminService>().GetPropertyOption(filterParam), ke => ke.Id, de => $"{de.Label} ({de.Name})", property => property.OptionList); modelBuilder.FormBuilder.SetCustomValidationFor(p => p.Name, (sp, propertyName) => sp.GetService <PropertyAdminService>().ValidatePropertyName(propertyName)); }); adminBuilder.Register <OptionList, OptionListAdminService>(modelBuilder => { modelBuilder.AdminTitle = "Option List"; modelBuilder.GridBuilder .AddField(p => p.Label) .AddField(p => p.Name) .AddField(p => p.IsActive, option => { option.DisplayName = "Is Active"; option.IsTrue = "Active"; option.IsFalse = "In Active"; }); modelBuilder.GridBuilder.DisplayFieldAs(c => c.IsActive, LabelType.Badge, c => c.IsActiveBadgeClass); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Label) .AddField(p => p.Name, option => { option.EnableIn = FormMode.Create; }) .AddField(p => p.IsActive); modelBuilder.AddChildConfig(s => s.List, (childForm) => { childForm.GridBuilder .AddField(c => c.Name) .AddField(c => c.Label); childForm.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.Name) .AddField(c => c.Label); }); modelBuilder.FormBuilder.SetCustomValidationFor(p => p.Name, (sp, propertyName) => sp.GetService <OptionListAdminService>().ValidatePropertyName(propertyName)); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.Register <User, UserAdminService>(modelBuilder => { modelBuilder.GridBuilder.Title = "Users"; modelBuilder.FormBuilder.Title = "User"; modelBuilder.GridBuilder .AddField(u => u.FirstName) .AddField(u => u.LastName) .AddField(u => u.Email); modelBuilder.FormBuilder .AddKeyField(u => u.Id) //.AddField(u => u.UserName, option => option.ValidationType = ValidationType.UserExist) .AddField(u => u.FirstName) .AddField(u => u.LastName) .AddField(u => u.Password, option => { option.FieldType = FieldType.Password; option.ShowIn = FormMode.Create; option.ValidationType = ValidationType.Password; }) //.AddField(u => u.PasswordConfirm, option => option.AddIn = AddInMode.Add) .AddField(u => u.Email, option => { option.ShowIn = FormMode.Create; option.ValidationType = ValidationType.UserExistByEmail; }) .AddMultiselectField(u => u.Roles); modelBuilder.FormBuilder.AddFormAction("UnlockUser", "Unlock User", (sp, user) => sp.GetService <UserAdminService>().UnlockUserAccount(user)); modelBuilder.FormBuilder.AddFormAction("LockUser", "Lock User", (sp, user) => sp.GetService <UserAdminService>().LockUserAccount(user)); modelBuilder.FormBuilder.Property(u => u.Roles).HasLookup(sp => sp.GetService <IRoleRepository>().GetRoles(), ke => ke.Id, de => de.Name); modelBuilder.AddCustomForm <PasswordReset>("PasswordReset", formBuilder => { formBuilder.Title = "Password Reset"; formBuilder .AddKeyField(f => f.Id) .AddField(f => f.CurrentPassword, option => { option.FieldType = FieldType.Password; option.DisplayName = "Current Password"; }) .AddField(f => f.NewPassword, option => { option.FieldType = FieldType.Password; option.DisplayName = "New Password"; option.ValidationType = ValidationType.Password; }); formBuilder.SetFormOption(formOption => { formOption.SaveButtonText = "Reset Password"; }); formBuilder.OnSubmit((sp, form) => sp.GetService <UserAdminService>().ResetPassword(form)); }); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.MapperConfiguration = BlogMapper.MapperConfiguration; adminBuilder.Register <DTO.Blog, IBlogService>(modelBuilder => { modelBuilder.GridBuilder .AddField(p => p.Name); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Name); }); adminBuilder.Register <DTO.Post, IPostService>(modelBuilder => { modelBuilder.GridBuilder.Title = "Posts"; modelBuilder.FormBuilder.Title = "Post"; modelBuilder.GridBuilder .AddField(p => p.Blog) .AddField(p => p.Title) .AddField(p => p.Category) .AddField(p => p.Tags) .AddField(p => p.CreatedOn, option => option.Format = "dd.MM.yyyy") .AddField(p => p.CreatedBy, option => option.DisplayName = "Author"); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddSelectField(p => p.Blog) .AddField(p => p.Title) .AddField(p => p.Slug) .AddField(s => s.Summary) .AddField(s => s.Thumbnail) .AddField(s => s.Content) .AddSelectField(s => s.Category, expr => expr.Name) .AddInlineMultiSelectField <DTO.Tag>(s => s.Tags, expr => expr.Name) .AddField(p => p.CreatedOn, option => option.Format = "dd.MM.yyyy"); modelBuilder.FormBuilder.SetCustomValidationFor(c => c.Slug, (sp, slug) => sp.GetService <IPostService>().ValidateSlug(slug)); modelBuilder.FormBuilder.Property(c => c.Slug).AutoFillBasedOn(p => p.Title, (sp, title) => sp.GetService <IPostService>().GetSlugFor(title)); modelBuilder.FormBuilder .Property(p => p.Tags) .AddItemBy(t => t.Name); modelBuilder.FormBuilder.Property(u => u.Blog).HasLookup(sp => sp.GetService <IBlogService>().GetBlogs(), ke => ke.Id, de => de.Name); modelBuilder.FormBuilder.Property(u => u.Category).HasLookup(sp => sp.GetService <ICategoryService>().GetCategories(), ke => ke.Id, de => de.Name); modelBuilder.FormBuilder.Property(u => u.Tags).HasLookup(sp => sp.GetService <ITagService>().GetTags(), ke => ke.Id, de => de.Name); modelBuilder.FormBuilder.AddFormAction("Publish", "Publish", (sp, post) => sp.GetService <IPostService>().PublishPost(post)); modelBuilder.AddChildConfig(s => s.Comments, (childForm) => { childForm.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.UserName) .AddField(c => c.Comment) .AddField(c => c.CreatedOn) .AddField(c => c.IsApproved); }); }); adminBuilder.Register <DTO.Category, ICategoryService>(modelBuilder => { modelBuilder.GridBuilder .AddField(p => p.Name); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Name); }); adminBuilder.Register <DTO.Tag, ITagService>(modelBuilder => { modelBuilder.GridBuilder .AddField(p => p.Name); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Name); }); }
public void ConfigureAdmin(IAdminBuilder adminBuilder) { adminBuilder.MapperConfiguration = BlogMapper.MapperConfiguration; adminBuilder.Register <DTO.Post>(modelBuilder => { modelBuilder.GridBuilder.Title = "Posts"; modelBuilder.FormBuilder.Title = "Post"; modelBuilder.GridBuilder .AddField(p => p.Title) .AddField(p => p.Category) .AddField(p => p.Tags) .AddField(p => p.CreatedOn, option => option.Format = "dd.MM.yyyy") .AddField(p => p.CreatedBy, option => option.DisplayName = "Author"); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Title) .AddField(s => s.Summary) .AddField(s => s.Thumbnail) .AddField(s => s.Content) .AddSelectField(s => s.Category, expr => expr.Name) .AddInlineMultiSelectField <DTO.Tag>(s => s.Tags, expr => expr.Name) .AddField(p => p.CreatedOn, option => option.Format = "dd.MM.yyyy"); modelBuilder.FormBuilder .Property(p => p.Tags) .AddItemBy(t => t.Name); modelBuilder.AddChildConfig(s => s.Comments, (childForm) => { childForm.FormBuilder .AddKeyField(c => c.Id) .AddField(c => c.UserName) .AddField(c => c.Comment) .AddField(c => c.CreatedOn) .AddField(c => c.IsApproved); }); }); adminBuilder.Register <DTO.Category>(modelBuilder => { modelBuilder.GridBuilder .AddField(p => p.Name); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Name); }); adminBuilder.Register <DTO.Tag>(modelBuilder => { modelBuilder.GridBuilder .AddField(p => p.Name); modelBuilder.FormBuilder .AddKeyField(p => p.Id) .AddField(p => p.Name); }); }