Allow self closing tags for AbpDynamicFormTagHelper

pull/279/head
Halil İbrahim Kalkan 8 years ago
parent 42d4663b50
commit d13e9f4d88

@ -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<AbpDynamicFormTagHelper, AbpDynamicFormTagHelperService>
{
[HtmlAttributeName("asp-model")]

@ -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();

@ -1,28 +1,24 @@
@page
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components
@model FormsModel
@model DynamicFormsModel
@{
ViewData["Title"] = "Forms";
}
<h2>Forms</h2>
<h2>Dynamic Forms</h2>
<p>Based on <a href="http://getbootstrap.com/docs/4.1/components/forms/" target="_blank"> Bootstrap form</a>.</p>
<h4># Dynamic Form Example</h4>
<h4># Example</h4>
<div class="demo-with-code">
<div class="demo-area">
<abp-dynamic-form asp-model="@Model.John">
</abp-dynamic-form>
<abp-dynamic-form asp-model="@Model.PersonInput" />
</div>
<div class="code-area">
<pre>
&lt;abp-dynamic-form asp-model=&quot;Model.John&quot; &gt;
&lt;/abp-dynamic-form&gt;
</pre>
<pre>
&lt;abp-dynamic-form asp-model=&quot;Model.PersonInput&quot; &gt;
&lt;/abp-dynamic-form&gt;
</pre>
</div>
</div>

@ -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<SelectListItem> Countries { get; set; } = new List<SelectListItem>
{
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
}
}
}

@ -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<SelectListItem> Countries { get; set; } = new List<SelectListItem>
{
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; }
}
}

@ -10,6 +10,6 @@
<li><a asp-page="Components/Buttons">Buttons</a></li>
<li><a asp-page="Components/Grids">Grids</a></li>
<li><a asp-page="Components/Cards">Cards</a></li>
<li><a asp-page="Components/Forms">Forms</a></li>
<li><a asp-page="Components/DynamicForms">Dynamic Forms</a></li>
</ul>

Loading…
Cancel
Save