From c6d4c52f7fa0b4a840892f1080f69d3da0171fe7 Mon Sep 17 00:00:00 2001 From: Deep Choudhery Date: Mon, 28 Oct 2024 15:07:32 -0700 Subject: [PATCH 1/2] checking and fixing for RequiredAttribute in model classes --- .../VS.Web.CG.EFCore/IPropertyExtensions.cs | 3 +- .../VS.Web.CG.EFCore/IPropertyMetadata.cs | 1 + .../VS.Web.CG.EFCore/PropertyMetadata.cs | 1 + .../VS.Web.CG.Mvc/Templates/Blazor/Create.cs | 7 +- .../VS.Web.CG.Mvc/Templates/Blazor/Create.tt | 5 +- .../VS.Web.CG.Mvc/Templates/Blazor/Edit.cs | 8 ++- .../VS.Web.CG.Mvc/Templates/Blazor/Edit.tt | 5 +- .../Bootstrap5/Create.cshtml | 70 ++++++++++--------- .../RazorPageGenerator/Bootstrap5/Edit.cshtml | 8 ++- .../Extensions/PropertySymbolExtensions.cs | 17 +++++ .../Templates/BlazorCrud/Create.cs | 8 ++- .../Templates/BlazorCrud/Create.tt | 6 +- .../Templates/BlazorCrud/Edit.cs | 9 ++- .../Templates/BlazorCrud/Edit.tt | 6 +- .../Templates/RazorPages/Create.cs | 7 +- .../Templates/RazorPages/Create.tt | 5 +- .../Templates/RazorPages/Edit.cs | 7 +- .../Templates/RazorPages/Edit.tt | 5 +- 18 files changed, 122 insertions(+), 56 deletions(-) create mode 100644 src/dotnet-scaffolding/dotnet-scaffold-aspnet/Extensions/PropertySymbolExtensions.cs diff --git a/src/Scaffolding/VS.Web.CG.EFCore/IPropertyExtensions.cs b/src/Scaffolding/VS.Web.CG.EFCore/IPropertyExtensions.cs index 06a081b93..4381d2d74 100644 --- a/src/Scaffolding/VS.Web.CG.EFCore/IPropertyExtensions.cs +++ b/src/Scaffolding/VS.Web.CG.EFCore/IPropertyExtensions.cs @@ -29,7 +29,7 @@ internal static IPropertyMetadata ToPropertyMetadata(this IProperty property, Ty propertyMetadata.IsReadOnly = property.GetBeforeSaveBehavior() != PropertySaveBehavior.Save; propertyMetadata.IsAutoGenerated = property.ValueGenerated != ValueGenerated.Never || property.GetValueGeneratorFactory() != null; - + propertyMetadata.ShortTypeName = TypeUtil.GetShortTypeName(property.ClrType); propertyMetadata.Scaffold = true; @@ -45,6 +45,7 @@ internal static IPropertyMetadata ToPropertyMetadata(this IProperty property, Ty var dataTypeAttr = reflectionProperty.GetCustomAttribute(typeof(DataTypeAttribute)) as DataTypeAttribute; propertyMetadata.IsMultilineText = (dataTypeAttr != null) && (dataTypeAttr.DataType == DataType.MultilineText); + propertyMetadata.IsRequired = reflectionProperty.GetCustomAttribute(typeof(RequiredAttribute)) is not null; } propertyMetadata.IsEnumFlags = false; diff --git a/src/Scaffolding/VS.Web.CG.EFCore/IPropertyMetadata.cs b/src/Scaffolding/VS.Web.CG.EFCore/IPropertyMetadata.cs index 48a005352..b1e742513 100644 --- a/src/Scaffolding/VS.Web.CG.EFCore/IPropertyMetadata.cs +++ b/src/Scaffolding/VS.Web.CG.EFCore/IPropertyMetadata.cs @@ -18,6 +18,7 @@ public interface IPropertyMetadata string ShortTypeName { get; set; } string TypeName { get; set; } bool IsMultilineText { get; set; } + public bool IsRequired { get; set; } PropertyInfo PropertyInfo { get; set; } } diff --git a/src/Scaffolding/VS.Web.CG.EFCore/PropertyMetadata.cs b/src/Scaffolding/VS.Web.CG.EFCore/PropertyMetadata.cs index 9246cf5fc..872931037 100644 --- a/src/Scaffolding/VS.Web.CG.EFCore/PropertyMetadata.cs +++ b/src/Scaffolding/VS.Web.CG.EFCore/PropertyMetadata.cs @@ -73,5 +73,6 @@ public PropertyMetadata(PropertyInfo property) public bool IsMultilineText { get; set; } public PropertyInfo PropertyInfo { get; set; } + public bool IsRequired { get; set; } } } diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Templates/Blazor/Create.cs b/src/Scaffolding/VS.Web.CG.Mvc/Templates/Blazor/Create.cs index af62f072e..97483d14e 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Templates/Blazor/Create.cs +++ b/src/Scaffolding/VS.Web.CG.Mvc/Templates/Blazor/Create.cs @@ -59,7 +59,7 @@ public virtual string TransformText() this.Write("\" OnValidSubmit=\"Add"); this.Write(this.ToStringHelper.ToStringWithCulture(modelName)); this.Write("\" FormName=\"create\" Enhance>\r\n \r\n " + - " \r\n "); + " \r\n "); foreach (var property in entityProperties) { @@ -68,6 +68,7 @@ public virtual string TransformText() string propertyShortTypeName = property.ShortTypeName.Replace("?", string.Empty); var inputTypeName = Model.GetInputType(propertyShortTypeName); var inputClass = Model.GetInputClassType(propertyShortTypeName); + var requiredHtml = property.IsRequired ? "aria-required=\"true\"" : string.Empty; this.Write("
\r\n