From d13e9f4d88e61808848153fbfb08645a0377830d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 May 2018 16:16:01 +0300 Subject: [PATCH] Allow self closing tags for AbpDynamicFormTagHelper --- .../Form/AbpDynamicformTagHelper.cs | 1 + .../Form/AbpDynamicformTagHelperService.cs | 2 + .../{Forms.cshtml => DynamicForms.cshtml} | 20 ++-- .../Pages/Components/DynamicForms.cshtml.cs | 92 +++++++++++++++++++ .../Pages/Components/Forms.cshtml.cs | 83 ----------------- .../Pages/Index.cshtml | 2 +- 6 files changed, 104 insertions(+), 96 deletions(-) rename test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/{Forms.cshtml => DynamicForms.cshtml} (92%) create mode 100644 test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml.cs delete mode 100644 test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml.cs diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs index 1bef51ea2e..814dd1c6af 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form { + [HtmlTargetElement("abp-dynamic-form", TagStructure = TagStructure.NormalOrSelfClosing)] public class AbpDynamicFormTagHelper : AbpTagHelper { [HtmlAttributeName("asp-model")] diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs index 50dca5e705..723c47f406 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs @@ -25,6 +25,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { + output.TagMode = TagMode.StartTagAndEndTag; + var list = InitilizeFormGroupContentsContext(context); await output.GetChildContentAsync(); diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml similarity index 92% rename from test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml rename to test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml index dadab1baec..4ef4980985 100644 --- a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml @@ -1,28 +1,24 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components -@model FormsModel +@model DynamicFormsModel @{ ViewData["Title"] = "Forms"; } -

Forms

+

Dynamic Forms

-

Based on Bootstrap form.

- -

# Dynamic Form Example

+

# Example

- - - +
-
       
-        <abp-dynamic-form asp-model="Model.John" >
-        </abp-dynamic-form>
-        
+
+<abp-dynamic-form asp-model="Model.PersonInput" >
+</abp-dynamic-form>
+
diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml.cs b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml.cs new file mode 100644 index 0000000000..e8beb67a5b --- /dev/null +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Mvc.Rendering; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components +{ + public class DynamicFormsModel : PageModel + { + [BindProperty] + public PersonModel PersonInput { get; set; } + + public void OnGet() + { + if (PersonInput == null) + { + PersonInput = new PersonModel + { + Name = "John", + Age = 65, + Phone = new PhoneModel { Number = "326346231", Name = "MyPhone" } + }; + } + } + + public void OnPost() + { + + } + + public class PersonModel + { + [Required] + [DisplayName("Name")] + public string Name { get; set; } = "MyName"; + + [Required] + [DisplayOrder(61)] + [DisplayName("Age")] + [Range(1, 100)] + public int Age { get; set; } + + [Required] + [DisplayName("City")] + public Cities City { get; set; } + + public PhoneModel Phone { get; set; } + + [DataType(DataType.Date)] + [DisplayName("Day")] + public DateTime Day { get; set; } + + [DisplayOrder(51)] + [DisplayName("Is Active")] + public bool IsActive { get; set; } + + [DisplayName("Country")] + [SelectItems(ItemsListPropertyName = nameof(Countries))] + public string Country { get; set; } + + public List Countries { get; set; } = new List + { + new SelectListItem { Value = "MX", Text = "Mexico" }, + new SelectListItem { Value = "CA", Text = "Canada" }, + new SelectListItem { Value = "US", Text = "USA" }, + }; + } + + public class PhoneModel + { + [Required] + [DisplayName("Number")] + public string Number { get; set; } + + [Required] + [DisplayOrder(71)] + [DisplayName("PhoneName")] + public string Name { get; set; } + } + + public enum Cities + { + Istanbul, + NewJersey, + Moscow + } + } +} \ No newline at end of file diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml.cs b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml.cs deleted file mode 100644 index 474fa54a6a..0000000000 --- a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; -using Microsoft.AspNetCore.Mvc.RazorPages; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Mvc.ViewFeatures; -using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components -{ - public class FormsModel : PageModel - { - public PersonViewModel John { get; set; } = new PersonViewModel(); - - public void OnGet() - { - John = new PersonViewModel - { - Name = "ahmet", - Age = 65, - Phone = new Phone {Number = "326346231",Name = "MyPhone"} - }; - } - } - - public enum Cities - { - Istanbul, - NewJersey, - Moscow - } - - public class PersonViewModel - { - [Required] - [DisplayName("Name")] - public string Name { get; set; } = "MyName"; - - [Required] - [DisplayOrder(61)] - [DisplayName("Age")] - [Range(1, 100)] - public int Age { get; set; } - - [Required] - [DisplayName("City")] - public Cities City { get; set; } - - public Phone Phone { get; set; } - - [DataType(DataType.Date)] - [DisplayName("Day")] - public DateTime Day { get; set; } - - [DisplayOrder(51)] - [DisplayName("Is Active")] - public bool IsActive { get; set; } - - [DisplayName("Country")] - [SelectItems(ItemsListPropertyName = nameof(Countries))] - public string Country { get; set; } - - public List Countries { get; set; } = new List - { - new SelectListItem { Value = "MX", Text = "Mexico" }, - new SelectListItem { Value = "CA", Text = "Canada" }, - new SelectListItem { Value = "US", Text = "USA" }, - }; - } - - public class Phone - { - [Required] - [DisplayName("Number")] - public string Number { get; set; } - - [Required] - [DisplayOrder(71)] - [DisplayName("PhoneName")] - public string Name { get; set; } - } -} \ No newline at end of file diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml index 39f05f6f61..38e59e522d 100644 --- a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml @@ -10,6 +10,6 @@
  • Buttons
  • Grids
  • Cards
  • -
  • Forms
  • +
  • Dynamic Forms