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 5ba7707689..b500253414 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 @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; @@ -11,20 +12,19 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form { private readonly HtmlEncoder _htmlEncoder; private readonly AbpInputTagHelper _abpInputTagHelper; - private readonly AbpSelectTagHelper _abpSelectTagHelper; + private const string SelectItemsPostFix = "selectitems"; - public AbpDynamicFormTagHelperService(HtmlEncoder htmlEncoder, AbpInputTagHelper abpInputTagHelper, AbpSelectTagHelper abpSelectTagHelper) + public AbpDynamicFormTagHelperService(HtmlEncoder htmlEncoder, AbpInputTagHelper abpInputTagHelper) { _htmlEncoder = htmlEncoder; _abpInputTagHelper = abpInputTagHelper; - _abpSelectTagHelper = abpSelectTagHelper; } public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "form"; - output.Attributes.Add("method","post"); - output.Attributes.Add("action","#"); + output.Attributes.Add("method", "post"); + output.Attributes.Add("action", "#"); var innerhtml = GetInnerHtmlContent(); @@ -38,19 +38,19 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form foreach (var model in models) { - innerHtmlcontent += ProcessField(model); + innerHtmlcontent += ProcessInputGroup(model); } return innerHtmlcontent; } - protected virtual string ProcessField(ModelExpression model) + protected virtual string ProcessInputGroup(ModelExpression model) { _abpInputTagHelper.AspFor = model; _abpInputTagHelper.Label = ""; _abpInputTagHelper.ViewContext = TagHelper.ViewContext; - return RenderTagHelper(new TagHelperAttributeList(), _abpInputTagHelper,_htmlEncoder,"div",TagMode.StartTagAndEndTag) + return RenderTagHelper(new TagHelperAttributeList(), _abpInputTagHelper, _htmlEncoder, "div", TagMode.StartTagAndEndTag) + Environment.NewLine; } 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 index 20301a221c..62ddaac061 100644 --- 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 @@ -71,10 +71,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components public class Person { + [Required] + [DisplayName("Name")] public string Name { get; set; } + [Required] + [DisplayName("Age")] public int Age { get; set; } + [Required] + [DisplayName("City")] public Cities City { get; set; } public Phone Phone { get; set; } @@ -85,11 +91,26 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components [DisplayName("Is Active")] public bool IsActive { get; set; } + + [DisplayName("Country")] + public string Country { get; set; } + + public List CountrySelectItems { get; } = 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] + [DisplayName("Name")] public string Name { get; set; } } } \ No newline at end of file