diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs index 5907872fe6..a7b3cda430 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs @@ -24,9 +24,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers private const string RouteAttributePrefix = "asp-route-"; private const string Href = "href"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } /// /// The name of the action method. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs index 5a0416fbf9..9dcdd2da8b 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs @@ -39,14 +39,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers /// /// Gets or sets the instance used to cache entries. /// - [Activate] - protected internal IMemoryCache MemoryCache { get; set; } + [Activate, HtmlAttributeNotBound] + public IMemoryCache MemoryCache { get; set; } /// /// Gets or sets the for the current executing View. /// - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } /// /// Gets or sets a to vary the cached result by. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs index 3e3473115f..51e9cdc10d 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs @@ -25,9 +25,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers /// public string Names { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHostingEnvironment HostingEnvironment { get; set; } + [Activate, HtmlAttributeNotBound] + public IHostingEnvironment HostingEnvironment { get; set; } /// public override void Process(TagHelperContext context, TagHelperOutput output) diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs index 797006ca08..4bcdf86dc7 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs @@ -21,13 +21,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers private const string RouteAttributePrefix = "asp-route-"; private const string HtmlActionAttributeName = "action"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } /// /// The name of the action method. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs index f9f44b3618..f5761beb44 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs @@ -62,13 +62,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { "time", "{0:HH:mm:ss.fff}" }, }; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } /// /// An expression to be evaluated against the current model. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs index eaedb3f2cd..92147945e3 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs @@ -15,13 +15,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { private const string ForAttributeName = "asp-for"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } /// /// An expression to be evaluated against the current model. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs index cc989d9c9a..ada03a638a 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs @@ -180,28 +180,27 @@ namespace Microsoft.AspNet.Mvc.TagHelpers [HtmlAttributeName(FallbackTestValueAttributeName)] public string FallbackTestValue { get; set; } - // Properties are protected to ensure subclasses are correctly activated. - // Internal for ease of use when testing. - [Activate] - protected internal ILoggerFactory LoggerFactory { get; set; } + [Activate, HtmlAttributeNotBound] + public ILoggerFactory LoggerFactory { get; set; } // TODO: will remove LoggerFactory and activate logger once DI/hosting bug is fixed - internal ILogger Logger { get; set; } + [HtmlAttributeNotBound] + public ILogger Logger { get; set; } - [Activate] - protected internal IHostingEnvironment HostingEnvironment { get; set; } + [Activate, HtmlAttributeNotBound] + public IHostingEnvironment HostingEnvironment { get; set; } - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - [Activate] - protected internal IMemoryCache Cache { get; set; } + [Activate, HtmlAttributeNotBound] + public IMemoryCache Cache { get; set; } - [Activate] - protected internal IHtmlEncoder HtmlEncoder { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlEncoder HtmlEncoder { get; set; } - [Activate] - protected internal IJavaScriptStringEncoder JavaScriptEncoder { get; set; } + [Activate, HtmlAttributeNotBound] + public IJavaScriptStringEncoder JavaScriptEncoder { get; set; } // Internal for ease of use when testing. protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; } diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs index 2e26a0586b..2b87a530a2 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs @@ -19,13 +19,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers /// public class OptionTagHelper : TagHelper { - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } /// /// Specifies a value for the <option> element. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs index 370b100ab7..fbfa5750fc 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs @@ -149,27 +149,27 @@ namespace Microsoft.AspNet.Mvc.TagHelpers [HtmlAttributeName(FallbackTestExpressionAttributeName)] public string FallbackTestExpression { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ILoggerFactory LoggerFactory { get; set; } + [Activate, HtmlAttributeNotBound] + public ILoggerFactory LoggerFactory { get; set; } // TODO: will remove LoggerFactory and activate logger once DI/hosting bug is fixed - internal ILogger Logger { get; set; } + [HtmlAttributeNotBound] + public ILogger Logger { get; set; } - [Activate] - protected internal IHostingEnvironment HostingEnvironment { get; set; } + [Activate, HtmlAttributeNotBound] + public IHostingEnvironment HostingEnvironment { get; set; } - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - [Activate] - protected internal IMemoryCache Cache { get; set; } + [Activate, HtmlAttributeNotBound] + public IMemoryCache Cache { get; set; } - [Activate] - protected internal IHtmlEncoder HtmlEncoder { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlEncoder HtmlEncoder { get; set; } - [Activate] - protected internal IJavaScriptStringEncoder JavaScriptEncoder { get; set; } + [Activate, HtmlAttributeNotBound] + public IJavaScriptStringEncoder JavaScriptEncoder { get; set; } // Internal for ease of use when testing. protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; } diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs index 8dd5ac79c2..0a7094f1a7 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs @@ -30,13 +30,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers /// public static readonly string SelectedValuesFormDataKey = nameof(SelectTagHelper) + "-SelectedValues"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } /// /// An expression to be evaluated against the current model. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs index eeedf94f99..c91e9fb226 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs @@ -15,13 +15,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { private const string ForAttributeName = "asp-for"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } /// /// An expression to be evaluated against the current model. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs index f7a9102cf1..6d007813f9 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs @@ -16,13 +16,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { private const string ValidationForAttributeName = "asp-validation-for"; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } /// /// Name to be validated on the current model. diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs index ab861e509b..ca9dab610a 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs @@ -17,13 +17,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers private const string ValidationSummaryAttributeName = "asp-validation-summary"; private ValidationSummary _validationSummary; - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal ViewContext ViewContext { get; set; } + [Activate, HtmlAttributeNotBound] + public ViewContext ViewContext { get; set; } - // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing. - [Activate] - protected internal IHtmlGenerator Generator { get; set; } + [Activate, HtmlAttributeNotBound] + public IHtmlGenerator Generator { get; set; } /// /// If or , appends a validation diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs index f50288305a..34019d1d14 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs @@ -147,7 +147,7 @@ namespace Microsoft.AspNet.Mvc.Razor private class ServiceTagHelper : TagHelper { - [Activate] + [Activate, HtmlAttributeNotBound] public MyService ActivatedService { get; set; } } @@ -159,7 +159,7 @@ namespace Microsoft.AspNet.Mvc.Razor private class ViewDataTagHelper : TagHelper { - [Activate] + [Activate, HtmlAttributeNotBound] public ViewDataDictionary ViewData { get; set; } } diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs index 6759200744..b33637a065 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs @@ -4,13 +4,12 @@ using System.Linq; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Razor.Runtime.TagHelpers; -using Microsoft.AspNet.Razor.TagHelpers; namespace TagHelpersWebSite.TagHelpers { public class ATagHelper : TagHelper { - [Activate] + [Activate, HtmlAttributeNotBound] public IUrlHelper UrlHelper { get; set; } public string Controller { get; set; } diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs index 5bc7a2b5be..421d7e9d71 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs @@ -25,7 +25,7 @@ namespace TagHelpersWebSite.TagHelpers public string Style { get; set; } - [Activate] + [Activate, HtmlAttributeNotBound] public ViewContext ViewContext { get; set; } public override void Process(TagHelperContext context, TagHelperOutput output) diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/TagCloudViewComponentTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/TagCloudViewComponentTagHelper.cs index bed887ffae..9279777fbe 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/TagCloudViewComponentTagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/TagCloudViewComponentTagHelper.cs @@ -4,7 +4,6 @@ using System; using System.IO; using System.Linq; -using System.Reflection; using System.Threading.Tasks; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.ViewComponents; @@ -26,7 +25,7 @@ namespace MvcSample.Web.Components public int Count { get; set; } - [Activate] + [Activate, HtmlAttributeNotBound] public ViewContext ViewContext { get; set; } public int Order { get; } = 0; @@ -35,7 +34,7 @@ namespace MvcSample.Web.Components { var result = await InvokeAsync(Count); var writer = new StringWriter(); - + var viewComponentDescriptor = new ViewComponentDescriptor() { Type = typeof(TagCloudViewComponentTagHelper),