diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/RenderAtEndOfFormTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/RenderAtEndOfFormTagHelper.cs index 1716b83c87..07697deb1d 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/RenderAtEndOfFormTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/RenderAtEndOfFormTagHelper.cs @@ -27,6 +27,11 @@ public class RenderAtEndOfFormTagHelper : TagHelper /// public override void Init(TagHelperContext context) { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + // Push the new FormContext. ViewContext.FormContext = new FormContext { diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs index 61d5ae13a8..09ca69f5e0 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs @@ -21,6 +21,8 @@ public class SelectTagHelper : TagHelper { private const string ForAttributeName = "asp-for"; private const string ItemsAttributeName = "asp-items"; + private bool _allowMultiple; + private IReadOnlyCollection _currentValues; /// /// Creates a new . @@ -59,27 +61,16 @@ public override int Order [HtmlAttributeName(ItemsAttributeName)] public IEnumerable Items { get; set; } - /// - /// Does nothing if is null. - /// - /// Thrown if is non-null but is null. - /// - public override void Process(TagHelperContext context, TagHelperOutput output) + public override void Init(TagHelperContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - // Note null or empty For.Name is allowed because TemplateInfo.HtmlFieldPrefix may be sufficient. // IHtmlGenerator will enforce name requirements. - var metadata = For.Metadata; - if (metadata == null) + if (For.Metadata == null) { throw new InvalidOperationException(Resources.FormatTagHelpers_NoProvidedMetadata( " +
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.Encoded.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.Encoded.html index ed4c20ce9b..8169d7284b 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.Encoded.html +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.Encoded.html @@ -40,6 +40,9 @@ +
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.html index 3b0fd90fe1..9c64ee6c06 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.html +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home.OrderUsingHtmlHelpers.html @@ -40,6 +40,9 @@ +
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs index c5af6c0039..5fc735a64a 100644 --- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs +++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs @@ -235,6 +235,7 @@ public async Task ProcessAsync_GeneratesExpectedOutput( }; // Act + tagHelper.Init(tagHelperContext); await tagHelper.ProcessAsync(tagHelperContext, output); // Assert @@ -332,6 +333,7 @@ public async Task ProcessAsync_WithItems_GeneratesExpectedOutput_DoesNotChangeSe }; // Act + tagHelper.Init(tagHelperContext); await tagHelper.ProcessAsync(tagHelperContext, output); // Assert @@ -427,7 +429,6 @@ public async Task ProcessAsyncInTemplate_WithItems_GeneratesExpectedOutput_DoesN var savedSelected = items.Select(item => item.Selected).ToList(); var savedText = items.Select(item => item.Text).ToList(); var savedValue = items.Select(item => item.Value).ToList(); - var tagHelper = new SelectTagHelper(htmlGenerator) { For = modelExpression, @@ -436,6 +437,7 @@ public async Task ProcessAsyncInTemplate_WithItems_GeneratesExpectedOutput_DoesN }; // Act + tagHelper.Init(tagHelperContext); await tagHelper.ProcessAsync(tagHelperContext, output); // Assert @@ -533,6 +535,7 @@ public async Task ProcessAsync_CallsGeneratorWithExpectedValues_ItemsAndAttribut }; // Act + tagHelper.Init(tagHelperContext); await tagHelper.ProcessAsync(tagHelperContext, output); // Assert @@ -606,6 +609,7 @@ public async Task TagHelper_CallsGeneratorWithExpectedValues_RealModelType( }; // Act + tagHelper.Init(tagHelperContext); await tagHelper.ProcessAsync(tagHelperContext, output); // Assert diff --git a/test/WebSites/HtmlGenerationWebSite/Views/HtmlGeneration_Home/OrderUsingHtmlHelpers.cshtml b/test/WebSites/HtmlGenerationWebSite/Views/HtmlGeneration_Home/OrderUsingHtmlHelpers.cshtml index 2ced6a94a9..5cde504726 100644 --- a/test/WebSites/HtmlGenerationWebSite/Views/HtmlGeneration_Home/OrderUsingHtmlHelpers.cshtml +++ b/test/WebSites/HtmlGenerationWebSite/Views/HtmlGeneration_Home/OrderUsingHtmlHelpers.cshtml @@ -43,6 +43,9 @@ Html.BeginForm(actionName: "Submit", controllerName: "HtmlGeneration_Order"))
@Html.LabelFor(m => m.PaymentMethod, htmlAttributes: new { @class = "order" }) @Html.ListBoxFor(m => m.PaymentMethod, selectList: new SelectList(new[] { new { value = "Credit" }, new { value = "Check" } }, dataValueField: "value", dataTextField: "value")) +
@Html.LabelFor(m => m.Customer.Number, htmlAttributes: new { @class = "order" })