diff --git a/src/Microsoft.AspNet.Mvc.Core/ViewContextAttribute.cs b/src/Microsoft.AspNet.Mvc.Core/ViewContextAttribute.cs
new file mode 100644
index 0000000000..5685dd2e39
--- /dev/null
+++ b/src/Microsoft.AspNet.Mvc.Core/ViewContextAttribute.cs
@@ -0,0 +1,17 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+
+namespace Microsoft.AspNet.Mvc
+{
+ ///
+ /// Specifies that a tag helper property should be set with the current
+ /// when creating the tag helper. The property must have a public
+ /// set method.
+ ///
+ [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
+ public class ViewContextAttribute : Attribute
+ {
+ }
+}
diff --git a/src/Microsoft.AspNet.Mvc.Razor/DefaultTagHelperActivator.cs b/src/Microsoft.AspNet.Mvc.Razor/DefaultTagHelperActivator.cs
index 7515d1049d..4a41085893 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/DefaultTagHelperActivator.cs
+++ b/src/Microsoft.AspNet.Mvc.Razor/DefaultTagHelperActivator.cs
@@ -26,15 +26,18 @@ namespace Microsoft.AspNet.Mvc.Razor
_injectActions = new ConcurrentDictionary[]>();
_getPropertiesToActivate = type =>
PropertyActivator.GetPropertiesToActivate(
- type, typeof(ActivateAttribute), CreateActivateInfo);
+ type,
+ typeof(ViewContextAttribute),
+ CreateActivateInfo);
}
///
public void Activate([NotNull] TTagHelper tagHelper, [NotNull] ViewContext context)
where TTagHelper : ITagHelper
{
- var propertiesToActivate = _injectActions.GetOrAdd(tagHelper.GetType(),
- _getPropertiesToActivate);
+ var propertiesToActivate = _injectActions.GetOrAdd(
+ tagHelper.GetType(),
+ _getPropertiesToActivate);
for (var i = 0; i < propertiesToActivate.Length; i++)
{
@@ -60,32 +63,7 @@ namespace Microsoft.AspNet.Mvc.Razor
private static PropertyActivator CreateActivateInfo(PropertyInfo property)
{
- Func valueAccessor;
- var propertyType = property.PropertyType;
-
- if (propertyType == typeof(ViewContext))
- {
- valueAccessor = viewContext => viewContext;
- }
- else if (propertyType == typeof(ViewDataDictionary))
- {
- valueAccessor = viewContext => viewContext.ViewData;
- }
- else
- {
- valueAccessor = (viewContext) =>
- {
- var serviceProvider = viewContext.HttpContext.RequestServices;
- var service = serviceProvider.GetRequiredService(propertyType);
-
- var contextable = service as ICanHasViewContext;
- contextable?.Contextualize(viewContext);
-
- return service;
- };
- }
-
- return new PropertyActivator(property, valueAccessor);
+ return new PropertyActivator(property, viewContext => viewContext);
}
}
}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.Razor/RazorPage.cs b/src/Microsoft.AspNet.Mvc.Razor/RazorPage.cs
index 0263cccfc9..3ab6edb827 100644
--- a/src/Microsoft.AspNet.Mvc.Razor/RazorPage.cs
+++ b/src/Microsoft.AspNet.Mvc.Razor/RazorPage.cs
@@ -29,6 +29,7 @@ namespace Microsoft.AspNet.Mvc.Razor
private TextWriter _originalWriter;
private IUrlHelper _urlHelper;
private ITagHelperActivator _tagHelperActivator;
+ private ITypeActivatorCache _typeActivatorCache;
private bool _renderedBody;
public RazorPage()
@@ -143,14 +144,28 @@ namespace Microsoft.AspNet.Mvc.Razor
{
if (_tagHelperActivator == null)
{
- _tagHelperActivator =
- ViewContext.HttpContext.RequestServices.GetRequiredService();
+ var services = ViewContext.HttpContext.RequestServices;
+ _tagHelperActivator = services.GetRequiredService();
}
return _tagHelperActivator;
}
}
+ private ITypeActivatorCache TypeActivatorCache
+ {
+ get
+ {
+ if (_typeActivatorCache == null)
+ {
+ var services = ViewContext.HttpContext.RequestServices;
+ _typeActivatorCache = services.GetRequiredService();
+ }
+
+ return _typeActivatorCache;
+ }
+ }
+
///
/// Format an error message about using an indexer when the tag helper property is null.
///
@@ -177,9 +192,11 @@ namespace Microsoft.AspNet.Mvc.Razor
///
/// must have a parameterless constructor.
///
- public TTagHelper CreateTagHelper() where TTagHelper : ITagHelper, new()
+ public TTagHelper CreateTagHelper() where TTagHelper : ITagHelper
{
- var tagHelper = new TTagHelper();
+ var tagHelper = TypeActivatorCache.CreateInstance(
+ ViewContext.HttpContext.RequestServices,
+ typeof(TTagHelper));
TagHelperActivator.Activate(tagHelper, ViewContext);
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs
index 8d218a64d6..d25a6949fe 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/AnchorTagHelper.cs
@@ -32,9 +32,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
private const string RouteValuesPrefix = "asp-route-";
private const string Href = "href";
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public AnchorTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
+ protected IHtmlGenerator Generator { get; }
///
/// 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 7d4f72a415..1394d250ba 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/CacheTagHelper.cs
@@ -37,17 +37,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
private static readonly char[] AttributeSeparator = new[] { ',' };
///
- /// Gets or sets the instance used to cache entries.
+ /// Creates a new .
///
- [Activate]
- [HtmlAttributeNotBound]
- public IMemoryCache MemoryCache { get; set; }
+ /// The .
+ public CacheTagHelper(IMemoryCache memoryCache)
+ {
+ MemoryCache = memoryCache;
+ }
+
+ ///
+ /// Gets the instance used to cache entries.
+ ///
+ protected IMemoryCache MemoryCache { get; }
///
/// Gets or sets the for the current executing View.
///
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
///
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs
index 1d9d511162..c2b8450ec2 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/EnvironmentTagHelper.cs
@@ -16,6 +16,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
private static readonly char[] NameSeparator = new[] { ',' };
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public EnvironmentTagHelper(IHostingEnvironment hostingEnvironment)
+ {
+ HostingEnvironment = hostingEnvironment;
+ }
+
///
/// A comma separated list of environment names in which the content should be rendered.
///
@@ -25,9 +34,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
///
public string Names { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHostingEnvironment HostingEnvironment { get; set; }
+ protected IHostingEnvironment HostingEnvironment { get; }
///
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 b9cedf9c04..87fd6f7b40 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs
@@ -28,13 +28,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
private const string RouteValuesPrefix = "asp-route-";
private const string HtmlActionAttributeName = "action";
- [Activate]
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public FormTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ protected IHtmlGenerator Generator { get; }
///
/// The name of the action method.
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ImageTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ImageTagHelper.cs
index 7cb42ddf71..cdd1496453 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/ImageTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ImageTagHelper.cs
@@ -25,6 +25,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
private FileVersionProvider _fileVersionProvider;
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ /// The .
+ public ImageTagHelper(IHostingEnvironment hostingEnvironment, IMemoryCache cache)
+ {
+ HostingEnvironment = hostingEnvironment;
+ Cache = cache;
+ }
+
///
/// Source of the image.
///
@@ -43,17 +54,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
[HtmlAttributeName(FileVersionAttributeName)]
public bool FileVersion { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHostingEnvironment HostingEnvironment { get; set; }
+ protected IHostingEnvironment HostingEnvironment { get; }
- [Activate]
- [HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IMemoryCache Cache { get; set; }
+ protected IMemoryCache Cache { get; }
///
public override void Process(TagHelperContext context, TagHelperOutput output)
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs
index 872fdb720b..c6cc959b87 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs
@@ -62,12 +62,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{ "time", "{0:HH:mm:ss.fff}" },
};
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public InputTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
+ protected IHtmlGenerator Generator { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
///
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs
index 1ad209a18c..5ce55c5e29 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs
@@ -15,13 +15,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
private const string ForAttributeName = "asp-for";
- [Activate]
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public LabelTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ protected IHtmlGenerator Generator { get; }
///
/// 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 d713110038..6619deaaa1 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/LinkTagHelper.cs
@@ -83,21 +83,26 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
}),
};
- private enum Mode
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ /// The .
+ /// The .
+ /// The .
+ /// The .
+ public LinkTagHelper(
+ ILogger logger,
+ IHostingEnvironment hostingEnvironment,
+ IMemoryCache cache,
+ IHtmlEncoder htmlEncoder,
+ IJavaScriptStringEncoder javaScriptEncoder)
{
- ///
- /// Just adding a file version for the generated urls.
- ///
- FileVersion = 0,
- ///
- /// Just performing file globbing search for the href, rendering a separate <link> for each match.
- ///
- GlobbedHref = 1,
- ///
- /// Rendering a fallback block if primary stylesheet fails to load. Will also do globbing for both the
- /// primary and fallback hrefs if the appropriate properties are set.
- ///
- Fallback = 2,
+ Logger = logger;
+ HostingEnvironment = hostingEnvironment;
+ Cache = cache;
+ HtmlEncoder = htmlEncoder;
+ JavaScriptEncoder = javaScriptEncoder;
}
///
@@ -180,29 +185,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
[HtmlAttributeName(FallbackTestValueAttributeName)]
public string FallbackTestValue { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- protected internal ILogger Logger { get; set; }
+ protected ILogger Logger { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHostingEnvironment HostingEnvironment { get; set; }
+ protected IHostingEnvironment HostingEnvironment { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IMemoryCache Cache { get; set; }
+ protected IMemoryCache Cache { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlEncoder HtmlEncoder { get; set; }
+ protected IHtmlEncoder HtmlEncoder { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IJavaScriptStringEncoder JavaScriptEncoder { get; set; }
+ protected IJavaScriptStringEncoder JavaScriptEncoder { get; }
// Internal for ease of use when testing.
protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; }
@@ -365,5 +360,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
builder.Append("/>");
}
+
+ private enum Mode
+ {
+ ///
+ /// Just adding a file version for the generated urls.
+ ///
+ FileVersion = 0,
+
+ ///
+ /// Just performing file globbing search for the href, rendering a separate <link> for each match.
+ ///
+ GlobbedHref = 1,
+
+ ///
+ /// Rendering a fallback block if primary stylesheet fails to load. Will also do globbing for both the
+ /// primary and fallback hrefs if the appropriate properties are set.
+ ///
+ Fallback = 2,
+ }
}
}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs
index 5cae58bb04..53d24ef921 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/OptionTagHelper.cs
@@ -19,12 +19,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
///
public class OptionTagHelper : TagHelper
{
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public OptionTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
+ protected IHtmlGenerator Generator { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
///
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs
index 3b213e0f97..8b278a1e59 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ScriptTagHelper.cs
@@ -70,21 +70,26 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
}),
};
- private enum Mode
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ /// The .
+ /// The .
+ /// The .
+ /// The .
+ public ScriptTagHelper(
+ ILogger logger,
+ IHostingEnvironment hostingEnvironment,
+ IMemoryCache cache,
+ IHtmlEncoder htmlEncoder,
+ IJavaScriptStringEncoder javaScriptEncoder)
{
- ///
- /// Just adding a file version for the generated urls.
- ///
- FileVersion = 0,
- ///
- /// Just performing file globbing search for the src, rendering a separate <script> for each match.
- ///
- GlobbedSrc = 1,
- ///
- /// Rendering a fallback block if primary javascript fails to load. Will also do globbing for both the
- /// primary and fallback srcs if the appropriate properties are set.
- ///
- Fallback = 2
+ Logger = logger;
+ HostingEnvironment = hostingEnvironment;
+ Cache = cache;
+ HtmlEncoder = htmlEncoder;
+ JavaScriptEncoder = javaScriptEncoder;
}
///
@@ -149,29 +154,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
[HtmlAttributeName(FallbackTestExpressionAttributeName)]
public string FallbackTestExpression { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- protected internal ILogger Logger { get; set; }
+ protected ILogger Logger { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHostingEnvironment HostingEnvironment { get; set; }
+ protected IHostingEnvironment HostingEnvironment { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IMemoryCache Cache { get; set; }
+ protected IMemoryCache Cache { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlEncoder HtmlEncoder { get; set; }
+ protected IHtmlEncoder HtmlEncoder { get; }
- [Activate]
- [HtmlAttributeNotBound]
- public IJavaScriptStringEncoder JavaScriptEncoder { get; set; }
+ protected IJavaScriptStringEncoder JavaScriptEncoder { get; }
// Internal for ease of use when testing.
protected internal GlobbingUrlBuilder GlobbingUrlBuilder { get; set; }
@@ -388,5 +383,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
.Append("\"");
}
}
+
+ private enum Mode
+ {
+ ///
+ /// Just adding a file version for the generated urls.
+ ///
+ FileVersion = 0,
+
+ ///
+ /// Just performing file globbing search for the src, rendering a separate <script> for each match.
+ ///
+ GlobbedSrc = 1,
+
+ ///
+ /// Rendering a fallback block if primary javascript fails to load. Will also do globbing for both the
+ /// primary and fallback srcs if the appropriate properties are set.
+ ///
+ Fallback = 2
+ }
}
}
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs
index d96a4dd040..4493fc16b5 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs
@@ -31,12 +31,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
///
public static readonly string SelectedValuesFormDataKey = nameof(SelectTagHelper) + "-SelectedValues";
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public SelectTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
+ protected IHtmlGenerator Generator { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
///
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs
index 47fbab0614..e04aa30c04 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/TextAreaTagHelper.cs
@@ -14,12 +14,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
private const string ForAttributeName = "asp-for";
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public TextAreaTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
+ protected IHtmlGenerator Generator { get; }
- [Activate]
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
///
diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs
index 0dacdcc8d5..e7e537266d 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationMessageTagHelper.cs
@@ -16,13 +16,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
private const string ValidationForAttributeName = "asp-validation-for";
- [Activate]
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public ValidationMessageTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
- [HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ protected IHtmlGenerator Generator { get; }
///
/// 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 bfd73c635d..ed94593b83 100644
--- a/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.TagHelpers/ValidationSummaryTagHelper.cs
@@ -17,13 +17,21 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
private const string ValidationSummaryAttributeName = "asp-validation-summary";
private ValidationSummary _validationSummary;
- [Activate]
+ ///
+ /// Creates a new .
+ ///
+ /// The .
+ public ValidationSummaryTagHelper(IHtmlGenerator generator)
+ {
+ Generator = generator;
+ }
+
[HtmlAttributeNotBound]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
- [Activate]
[HtmlAttributeNotBound]
- public IHtmlGenerator Generator { get; set; }
+ protected IHtmlGenerator Generator { get; }
///
/// If or , appends a validation
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs
index a805193603..d1d44814a2 100644
--- a/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs
+++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/ActivatorTests.cs
@@ -147,7 +147,7 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
}
[Fact]
- public async Task TagHelperActivation_ActivateHtmlHelper_RendersProperly()
+ public async Task TagHelperActivation_ConstructorInjection_RendersProperly()
{
// Arrange
var server = TestHelper.CreateServer(_app, SiteName, _configureServices);
diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/DefaultTagHelperActivatorTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/DefaultTagHelperActivatorTest.cs
index 47b02340e2..842f93c274 100644
--- a/test/Microsoft.AspNet.Mvc.Razor.Test/DefaultTagHelperActivatorTest.cs
+++ b/test/Microsoft.AspNet.Mvc.Razor.Test/DefaultTagHelperActivatorTest.cs
@@ -158,7 +158,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public object ViewDataValue { get; set; } = new object();
- [Activate]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
}
@@ -170,7 +170,7 @@ namespace Microsoft.AspNet.Mvc.Razor
public object ViewDataValue { get; set; } = new object();
- [Activate]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
}
}
diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs
index e2f8c5c003..a2861cc661 100644
--- a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageCreateTagHelperTest.cs
@@ -57,56 +57,18 @@ namespace Microsoft.AspNet.Mvc.Razor
Assert.NotNull(tagHelper.ViewContext);
}
- [Fact]
- public void CreateTagHelper_ProvidesTagHelperWithViewData()
- {
- // Arrange
- var instance = CreateTestRazorPage();
-
- // Act
- var tagHelper = instance.CreateTagHelper();
-
- // Assert
- Assert.NotNull(tagHelper.ViewData);
- }
-
- [Fact]
- public void CreateTagHelper_ProvidesTagHelperWithInternalProperties()
- {
- // Arrange
- var instance = CreateTestRazorPage();
-
- // Act
- var tagHelper = instance.CreateTagHelper();
-
- // Assert
- Assert.NotNull(tagHelper.ViewData);
- Assert.NotNull(tagHelper.ViewContext);
- }
-
- [Fact]
- public void CreateTagHelper_ProvidesTagHelperTypeWithViewContextAndActivates()
- {
- // Arrange
- var instance = CreateTestRazorPage();
-
- // Act
- var tagHelper = instance.CreateTagHelper();
-
- // Assert
- Assert.NotNull(tagHelper.ViewContext);
- Assert.NotNull(tagHelper.ActivatedService);
- }
-
private static TestRazorPage CreateTestRazorPage()
{
var activator = new RazorPageActivator(new EmptyModelMetadataProvider());
var serviceProvider = new Mock();
+ var typeActivator = new DefaultTypeActivatorCache();
var myService = new MyService();
serviceProvider.Setup(mock => mock.GetService(typeof(MyService)))
.Returns(myService);
serviceProvider.Setup(mock => mock.GetService(typeof(ITagHelperActivator)))
.Returns(new DefaultTagHelperActivator());
+ serviceProvider.Setup(mock => mock.GetService(typeof(ITypeActivatorCache)))
+ .Returns(typeActivator);
serviceProvider.Setup(mock => mock.GetService(It.Is(serviceType =>
serviceType.IsGenericType && serviceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))))
.Returns(serviceType =>
@@ -147,39 +109,21 @@ namespace Microsoft.AspNet.Mvc.Razor
private class ServiceTagHelper : TagHelper
{
- [Activate]
+ public ServiceTagHelper(MyService service)
+ {
+ ActivatedService = service;
+ }
+
[HtmlAttributeNotBound]
- public MyService ActivatedService { get; set; }
+ public MyService ActivatedService { get; }
}
private class ViewContextTagHelper : TagHelper
{
- [Activate]
+ [ViewContext]
public ViewContext ViewContext { get; set; }
}
- private class ViewDataTagHelper : TagHelper
- {
- [Activate]
- [HtmlAttributeNotBound]
- public ViewDataDictionary ViewData { get; set; }
- }
-
- private class ViewContextServiceTagHelper : ViewContextTagHelper
- {
- [Activate]
- public MyService ActivatedService { get; set; }
- }
-
- private class TagHelperWithInternalProperty : TagHelper
- {
- [Activate]
- protected internal ViewDataDictionary ViewData { get; set; }
-
- [Activate]
- protected internal ViewContext ViewContext { get; set; }
- }
-
private class MyService
{
}
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs
index 9275d8e6af..75360f2633 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs
@@ -58,12 +58,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var viewContext = TestableHtmlGenerator.GetViewContext(model: null,
htmlGenerator: htmlGenerator,
metadataProvider: metadataProvider);
- var anchorTagHelper = new AnchorTagHelper
+ var anchorTagHelper = new AnchorTagHelper(htmlGenerator)
{
Action = "index",
Controller = "home",
Fragment = "hello=world",
- Generator = htmlGenerator,
Host = "contoso.com",
Protocol = "http",
RouteValues =
@@ -117,10 +116,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
null))
.Returns(new TagBuilder("a", new CommonTestEncoder()))
.Verifiable();
- var anchorTagHelper = new AnchorTagHelper
+ var anchorTagHelper = new AnchorTagHelper(generator.Object)
{
Fragment = "hello=world",
- Generator = generator.Object,
Host = "contoso.com",
Protocol = "http",
Route = "Default",
@@ -167,12 +165,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
null))
.Returns(new TagBuilder("a", new CommonTestEncoder()))
.Verifiable();
- var anchorTagHelper = new AnchorTagHelper
+ var anchorTagHelper = new AnchorTagHelper(generator.Object)
{
Action = "Index",
Controller = "Home",
Fragment = "hello=world",
- Generator = generator.Object,
Host = "contoso.com",
Protocol = "http",
};
@@ -196,7 +193,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public async Task ProcessAsync_ThrowsIfHrefConflictsWithBoundAttributes(string propertyName)
{
// Arrange
- var anchorTagHelper = new AnchorTagHelper();
+ var metadataProvider = new EmptyModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var anchorTagHelper = new AnchorTagHelper(htmlGenerator);
+
var output = new TagHelperOutput(
"a",
attributes: new TagHelperAttributeList
@@ -230,10 +231,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public async Task ProcessAsync_ThrowsIfRouteAndActionOrControllerProvided(string propertyName)
{
// Arrange
- var anchorTagHelper = new AnchorTagHelper
+ var metadataProvider = new EmptyModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var anchorTagHelper = new AnchorTagHelper(htmlGenerator)
{
Route = "Default",
};
+
typeof(AnchorTagHelper).GetProperty(propertyName).SetValue(anchorTagHelper, "Home");
var output = new TagHelperOutput(
"a",
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/CacheTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/CacheTagHelperTest.cs
index b8c80eee71..14ba479342 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/CacheTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/CacheTagHelperTest.cs
@@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var id = Guid.NewGuid().ToString();
var tagHelperContext = GetTagHelperContext(id);
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext()
};
@@ -52,7 +52,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
// Arrange
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryBy = varyBy
@@ -80,7 +80,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
// Arrange
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByCookie = varyByCookie
@@ -105,7 +105,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
// Arrange
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByHeader = varyByHeader
@@ -132,7 +132,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
// Arrange
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByQuery = varyByQuery
@@ -157,7 +157,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
// Arrange
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByRoute = varyByRoute
@@ -178,7 +178,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expected = "CacheTagHelper||testid||VaryByUser||";
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByUser = true
@@ -197,7 +197,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expected = "CacheTagHelper||testid||VaryByUser||test_name";
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByUser = true
@@ -219,7 +219,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var expected = GetHashedBytes("CacheTagHelper||testid||VaryBy||custom-value||" +
"VaryByHeader(content-type||text/html)||VaryByUser||someuser");
var tagHelperContext = GetTagHelperContext();
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(Mock.Of())
{
ViewContext = GetViewContext(),
VaryByUser = true,
@@ -257,10 +257,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
.Returns(false);
var tagHelperContext = GetTagHelperContext(id, childContent);
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache.Object)
{
ViewContext = GetViewContext(),
- MemoryCache = cache.Object,
Enabled = false
};
@@ -297,10 +296,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
.Returns(false);
var tagHelperContext = GetTagHelperContext(id, childContent);
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache.Object)
{
ViewContext = GetViewContext(),
- MemoryCache = cache.Object,
Enabled = true
};
@@ -328,11 +326,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var cache = new MemoryCache(new MemoryCacheOptions());
var tagHelperContext1 = GetTagHelperContext(id, childContent);
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList());
- var cacheTagHelper1 = new CacheTagHelper
+ var cacheTagHelper1 = new CacheTagHelper(cache)
{
VaryByQuery = "key1,key2",
ViewContext = GetViewContext(),
- MemoryCache = cache
};
cacheTagHelper1.ViewContext.HttpContext.Request.QueryString = new Http.QueryString(
"?key1=value1&key2=value2");
@@ -349,11 +346,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange - 2
var tagHelperContext2 = GetTagHelperContext(id, "different-content");
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList());
- var cacheTagHelper2 = new CacheTagHelper
+ var cacheTagHelper2 = new CacheTagHelper(cache)
{
VaryByQuery = "key1,key2",
ViewContext = GetViewContext(),
- MemoryCache = cache
};
cacheTagHelper2.ViewContext.HttpContext.Request.QueryString = new Http.QueryString(
"?key1=value1&key2=value2");
@@ -379,11 +375,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput1.PreContent.Append("");
tagHelperOutput1.PostContent.SetContent("");
- var cacheTagHelper1 = new CacheTagHelper
+ var cacheTagHelper1 = new CacheTagHelper(cache)
{
VaryByCookie = "cookie1,cookie2",
ViewContext = GetViewContext(),
- MemoryCache = cache
};
cacheTagHelper1.ViewContext.HttpContext.Request.Headers["Cookie"] = "cookie1=value1;cookie2=value2";
@@ -402,11 +397,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput2.PreContent.SetContent("");
tagHelperOutput2.PostContent.SetContent("");
- var cacheTagHelper2 = new CacheTagHelper
+ var cacheTagHelper2 = new CacheTagHelper(cache)
{
VaryByCookie = "cookie1,cookie2",
ViewContext = GetViewContext(),
- MemoryCache = cache
};
cacheTagHelper2.ViewContext.HttpContext.Request.Headers["Cookie"] = "cookie1=value1;cookie2=not-value2";
@@ -426,9 +420,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expiresOn = DateTimeOffset.UtcNow.AddMinutes(4);
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
ExpiresOn = expiresOn
};
@@ -445,9 +438,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expiresOn = DateTimeOffset.UtcNow.AddMinutes(7);
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache
};
var entryLink = new EntryLink();
@@ -467,9 +459,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var expiresOn1 = DateTimeOffset.UtcNow.AddDays(12);
var expiresOn2 = DateTimeOffset.UtcNow.AddMinutes(4);
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
ExpiresOn = expiresOn1
};
@@ -489,9 +480,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expiresAfter = TimeSpan.FromSeconds(42);
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
ExpiresAfter = expiresAfter
};
@@ -508,9 +498,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var expiresSliding = TimeSpan.FromSeconds(37);
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
ExpiresSliding = expiresSliding
};
@@ -527,9 +516,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Arrange
var priority = CacheItemPriority.High;
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
Priority = priority
};
@@ -547,9 +535,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var expiresSliding = TimeSpan.FromSeconds(30);
var expected = new[] { Mock.Of(), Mock.Of() };
var cache = new MemoryCache(new MemoryCacheOptions());
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
- MemoryCache = cache,
ExpiresSliding = expiresSliding
};
@@ -578,10 +565,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput1.PreContent.SetContent("");
tagHelperOutput1.PostContent.SetContent("");
- var cacheTagHelper1 = new CacheTagHelper
+ var cacheTagHelper1 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresAfter = TimeSpan.FromMinutes(10)
};
@@ -600,10 +586,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput2.PreContent.SetContent("");
tagHelperOutput2.PostContent.SetContent("");
- var cacheTagHelper2 = new CacheTagHelper
+ var cacheTagHelper2 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresAfter = TimeSpan.FromMinutes(10)
};
currentTime = currentTime.AddMinutes(11);
@@ -633,10 +618,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput1.PreContent.SetContent("");
tagHelperOutput1.PostContent.SetContent("");
- var cacheTagHelper1 = new CacheTagHelper
+ var cacheTagHelper1 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresOn = currentTime.AddMinutes(5)
};
@@ -656,10 +640,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput2.PreContent.SetContent("");
tagHelperOutput2.PostContent.SetContent("");
- var cacheTagHelper2 = new CacheTagHelper
+ var cacheTagHelper2 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresOn = currentTime.AddMinutes(5)
};
@@ -688,10 +671,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput1.PreContent.SetContent("");
tagHelperOutput1.PostContent.SetContent("");
- var cacheTagHelper1 = new CacheTagHelper
+ var cacheTagHelper1 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresSliding = TimeSpan.FromSeconds(30)
};
@@ -711,10 +693,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput2.PreContent.SetContent("");
tagHelperOutput2.PostContent.SetContent("");
- var cacheTagHelper2 = new CacheTagHelper
+ var cacheTagHelper2 = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
ExpiresSliding = TimeSpan.FromSeconds(30)
};
@@ -757,10 +738,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
tagHelperOutput.PreContent.SetContent("");
tagHelperOutput.PostContent.SetContent("");
- var cacheTagHelper = new CacheTagHelper
+ var cacheTagHelper = new CacheTagHelper(cache)
{
ViewContext = GetViewContext(),
- MemoryCache = cache,
};
var key = cacheTagHelper.GenerateKey(tagHelperContext);
@@ -819,4 +799,4 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
}
}
}
-}
\ No newline at end of file
+}
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/EnvironmentTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/EnvironmentTagHelperTest.cs
index b47fe7e341..60f175b5ae 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/EnvironmentTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/EnvironmentTagHelperTest.cs
@@ -88,9 +88,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
hostingEnvironment.Object.EnvironmentName = environmentName;
// Act
- var helper = new EnvironmentTagHelper
+ var helper = new EnvironmentTagHelper(hostingEnvironment.Object)
{
- HostingEnvironment = hostingEnvironment.Object,
Names = namesAttribute
};
helper.Process(context, output);
@@ -116,9 +115,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
hostingEnvironment.Object.EnvironmentName = environmentName;
// Act
- var helper = new EnvironmentTagHelper
+ var helper = new EnvironmentTagHelper(hostingEnvironment.Object)
{
- HostingEnvironment = hostingEnvironment.Object,
Names = namesAttribute
};
helper.Process(context, output);
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/FormTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/FormTagHelperTest.cs
index df4b616179..6d90cf2f0b 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/FormTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/FormTagHelperTest.cs
@@ -60,12 +60,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
metadataProvider: metadataProvider);
var expectedPostContent = "Something" + htmlGenerator.GenerateAntiForgery(viewContext)
.ToString(TagRenderMode.SelfClosing);
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(htmlGenerator)
{
Action = "index",
AntiForgery = true,
Controller = "home",
- Generator = htmlGenerator,
ViewContext = viewContext,
RouteValues =
{
@@ -127,11 +126,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
generator.Setup(mock => mock.GenerateAntiForgery(viewContext))
.Returns(new TagBuilder("input", new CommonTestEncoder()));
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(generator.Object)
{
Action = "Index",
AntiForgery = antiForgery,
- Generator = generator.Object,
ViewContext = viewContext,
};
@@ -194,11 +192,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
})
.Returns(new TagBuilder("form", new CommonTestEncoder()))
.Verifiable();
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(generator.Object)
{
Action = "Index",
AntiForgery = false,
- Generator = generator.Object,
ViewContext = testViewContext,
RouteValues =
{
@@ -250,12 +247,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
null))
.Returns(new TagBuilder("form", new CommonTestEncoder()))
.Verifiable();
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(generator.Object)
{
Action = "Index",
AntiForgery = false,
Controller = "Home",
- Generator = generator.Object,
ViewContext = viewContext,
};
@@ -301,11 +297,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
null))
.Returns(new TagBuilder("form", new CommonTestEncoder()))
.Verifiable();
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(generator.Object)
{
AntiForgery = false,
Route = "Default",
- Generator = generator.Object,
ViewContext = viewContext,
RouteValues =
{
@@ -341,10 +336,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
generator.Setup(mock => mock.GenerateAntiForgery(It.IsAny()))
.Returns(new TagBuilder("input", new CommonTestEncoder()));
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(generator.Object)
{
AntiForgery = antiForgery,
- Generator = generator.Object,
ViewContext = viewContext,
};
@@ -386,7 +380,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public async Task ProcessAsync_ThrowsIfActionConflictsWithBoundAttributes(string propertyName)
{
// Arrange
- var formTagHelper = new FormTagHelper();
+ var formTagHelper = new FormTagHelper(new TestableHtmlGenerator(new EmptyModelMetadataProvider()));
var tagHelperOutput = new TagHelperOutput(
"form",
attributes: new TagHelperAttributeList
@@ -419,7 +413,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public async Task ProcessAsync_ThrowsIfRouteAndActionOrControllerProvided(string propertyName)
{
// Arrange
- var formTagHelper = new FormTagHelper
+ var formTagHelper = new FormTagHelper(new TestableHtmlGenerator(new EmptyModelMetadataProvider()))
{
Route = "Default",
};
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ImageTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ImageTagHelperTest.cs
index dba73ef93f..1b70f9f05c 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ImageTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ImageTagHelperTest.cs
@@ -56,13 +56,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ImageTagHelper
+
+ var helper = new ImageTagHelper(hostingEnvironment, MakeCache())
{
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "testimage.png",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
@@ -98,13 +97,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
});
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ImageTagHelper
+
+ var helper = new ImageTagHelper(hostingEnvironment, MakeCache())
{
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "/images/test-image.png",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
@@ -135,13 +133,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
});
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ImageTagHelper
+
+ var helper = new ImageTagHelper(hostingEnvironment, MakeCache())
{
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "/images/test-image.png",
FileVersion = false,
- Cache = MakeCache(),
};
// Act
@@ -172,13 +169,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
});
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext("/bar");
- var helper = new ImageTagHelper
+
+ var helper = new ImageTagHelper(hostingEnvironment, MakeCache())
{
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "/bar/images/image.jpg",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/InputTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/InputTagHelperTest.cs
index b1a37a4687..e2ab61f516 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/InputTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/InputTagHelperTest.cs
@@ -939,10 +939,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var modelExpression = new ModelExpression(expressionName, modelExplorer);
var viewContext = TestableHtmlGenerator.GetViewContext(container, htmlGenerator, metadataProvider);
- var inputTagHelper = new InputTagHelper
+ var inputTagHelper = new InputTagHelper(htmlGenerator)
{
For = modelExpression,
- Generator = htmlGenerator,
ViewContext = viewContext,
};
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LabelTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LabelTagHelperTest.cs
index 7d64bb4209..b5a0d63310 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LabelTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LabelTagHelperTest.cs
@@ -177,9 +177,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var propertyMetadata = metadataProvider.GetMetadataForProperty(containerType, "Text");
var modelExplorer = containerExplorer.GetExplorerForExpression(propertyMetadata, modelAccessor());
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
var modelExpression = new ModelExpression(propertyPath, modelExplorer);
- var tagHelper = new LabelTagHelper
+ var tagHelper = new LabelTagHelper(htmlGenerator)
{
For = modelExpression,
};
@@ -211,11 +212,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
{
output.Content.SetContent(tagHelperOutputContent.OriginalContent);
}
-
- var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
var viewContext = TestableHtmlGenerator.GetViewContext(model, htmlGenerator, metadataProvider);
tagHelper.ViewContext = viewContext;
- tagHelper.Generator = htmlGenerator;
// Act
await tagHelper.ProcessAsync(tagHelperContext, output);
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LinkTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LinkTagHelperTest.cs
index 29875f2303..529a35ced8 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LinkTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/LinkTagHelperTest.cs
@@ -109,19 +109,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
FallbackHref = "test.css",
FallbackTestClass = "hidden",
FallbackTestProperty = "visibility",
FallbackTestValue = "hidden",
Href = "test.css",
- Cache = MakeCache(),
};
// Act
@@ -280,14 +281,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache()
};
setProperties(helper);
@@ -324,19 +326,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
FallbackHref = "test.css",
FallbackTestClass = "hidden",
FallbackTestProperty = "visibility",
FallbackTestValue = "hidden",
Href = "test.css",
- Cache = MakeCache(),
};
// Act
@@ -431,12 +434,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache(),
};
setProperties(helper);
@@ -457,12 +463,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache(),
};
// Act
@@ -494,16 +503,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/css/site.css", "**/*.css", null))
.Returns(new[] { "/css/site.css", "/base.css" });
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Href = "/css/site.css",
HrefInclude = "**/*.css",
- Cache = MakeCache(),
};
// Act
@@ -537,16 +548,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/css/site.css", "**/*.css", null))
.Returns(new[] { "/css/site.css", "/base.css" });
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Href = "/css/site.css",
HrefInclude = "**/*.css",
- Cache = MakeCache(),
};
// Act
@@ -577,16 +590,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Href = "/css/site.css",
HrefInclude = "**/*.css",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
@@ -616,16 +631,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext("/bar");
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Href = "/bar/css/site.css",
HrefInclude = "**/*.css",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
@@ -659,17 +676,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/css/site.css", "**/*.css", null))
.Returns(new[] { "/css/site.css", "/base.css" });
- var helper = new LinkTagHelper
+
+ var helper = new LinkTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Href = "/css/site.css",
HrefInclude = "**/*.css",
FileVersion = true,
- Cache = MakeCache(),
};
// Act
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/OptionTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/OptionTagHelperTest.cs
index 64ceb0068b..6e8d81ed41 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/OptionTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/OptionTagHelperTest.cs
@@ -419,9 +419,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
htmlGenerator: htmlGenerator,
metadataProvider: metadataProvider);
viewContext.FormContext.FormData[SelectTagHelper.SelectedValuesFormDataKey] = selectedValues;
- var tagHelper = new OptionTagHelper
+ var tagHelper = new OptionTagHelper(htmlGenerator)
{
- Generator = htmlGenerator,
Value = value,
ViewContext = viewContext,
};
@@ -489,7 +488,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
htmlGenerator: htmlGenerator,
metadataProvider: metadataProvider);
viewContext.FormContext.FormData[SelectTagHelper.SelectedValuesFormDataKey] = selectedValues;
- var tagHelper = new OptionTagHelper
+ var tagHelper = new OptionTagHelper(htmlGenerator)
{
Value = value,
ViewContext = viewContext,
@@ -535,6 +534,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
tagHelperContent.SetContent(originalContent);
return Task.FromResult(tagHelperContent);
});
+
var output = new TagHelperOutput(originalTagName, originalAttributes)
{
SelfClosing = false,
@@ -543,7 +543,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
output.Content.SetContent(originalContent);
output.PostContent.SetContent(originalPostContent);
- var tagHelper = new OptionTagHelper
+ var metadataProvider = new EmptyModelMetadataProvider();
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var tagHelper = new OptionTagHelper(htmlGenerator)
{
Value = value,
};
@@ -562,4 +565,4 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
return tagHelperOutput;
}
}
-}
+}
\ No newline at end of file
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs
index 4803670fae..9b512787dc 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs
@@ -55,17 +55,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var output = MakeTagHelperOutput("script", combinedOutputAttributes);
var hostingEnvironment = MakeHostingEnvironment();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ CreateLogger(),
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
ViewContext = viewContext,
- HostingEnvironment = hostingEnvironment,
FallbackSrc = "~/blank.js",
FallbackTestExpression = "http://www.example.com/blank.js",
Src = "/blank.js",
- Cache = MakeCache(),
- Logger = CreateLogger()
};
// Act
@@ -271,14 +271,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = CreateLogger();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ CreateLogger(),
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
- Logger = logger,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache(),
};
setProperties(helper);
@@ -363,12 +364,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = new Mock>();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ CreateLogger(),
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache(),
};
setProperties(helper);
@@ -392,12 +396,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = CreateLogger();
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ logger,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
- Cache = MakeCache(),
};
setProperties(helper);
@@ -431,11 +438,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var output = MakeTagHelperOutput("script");
var logger = CreateLogger();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ CreateLogger(),
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger,
ViewContext = viewContext,
- Cache = MakeCache(),
};
// Act
@@ -455,11 +465,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var output = MakeTagHelperOutput("script");
var logger = CreateLogger();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ logger,
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger,
ViewContext = viewContext,
- Cache = MakeCache(),
};
// Act
@@ -503,17 +516,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var logger = CreateLogger();
var hostingEnvironment = MakeHostingEnvironment();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ logger,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new CommonTestEncoder(),
- Logger = logger,
ViewContext = viewContext,
- HostingEnvironment = hostingEnvironment,
FallbackSrc = "~/blank.js",
FallbackTestExpression = "http://www.example.com/blank.js",
Src = "/blank.js",
- Cache = MakeCache(),
};
// Act
@@ -543,16 +556,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/js/site.js", "**/*.js", null))
.Returns(new[] { "/js/site.js", "/common.js" });
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "/js/site.js",
SrcInclude = "**/*.js",
- HtmlEncoder = new CommonTestEncoder(),
- Cache = MakeCache(),
};
// Act
@@ -580,17 +595,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/js/site.js", "**/*.js", null))
.Returns(new[] { "/js/site.js", "/common.js" });
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ hostingEnvironment,
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
Src = "/js/site.js",
SrcInclude = "**/*.js",
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new TestJavaScriptEncoder(),
- Cache = MakeCache(),
};
// Act
@@ -617,16 +633,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
FileVersion = true,
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new TestJavaScriptEncoder(),
Src = "/js/site.js",
- Cache = MakeCache(),
};
// Act
@@ -654,16 +670,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext("/bar");
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
FileVersion = true,
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new TestJavaScriptEncoder(),
Src = "/bar/js/site.js",
- Cache = MakeCache(),
};
// Act
@@ -693,18 +709,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var hostingEnvironment = MakeHostingEnvironment();
var viewContext = MakeViewContext();
- var helper = new ScriptTagHelper
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
FallbackSrc = "fallback.js",
FallbackTestExpression = "isavailable()",
FileVersion = true,
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new TestJavaScriptEncoder(),
Src = "/js/site.js",
- Cache = MakeCache(),
};
// Act
@@ -713,7 +729,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Assert
Assert.Equal(
"\r\n\r\n",
output.Content.GetContent());
}
@@ -736,18 +752,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var globbingUrlBuilder = new Mock();
globbingUrlBuilder.Setup(g => g.BuildUrlList("/js/site.js", "*.js", null))
.Returns(new[] { "/js/site.js", "/common.js" });
- var helper = new ScriptTagHelper
+
+ var helper = new ScriptTagHelper(
+ logger.Object,
+ MakeHostingEnvironment(),
+ MakeCache(),
+ new CommonTestEncoder(),
+ new CommonTestEncoder())
{
GlobbingUrlBuilder = globbingUrlBuilder.Object,
- Logger = logger.Object,
- HostingEnvironment = hostingEnvironment,
ViewContext = viewContext,
SrcInclude = "*.js",
FileVersion = true,
- HtmlEncoder = new CommonTestEncoder(),
- JavaScriptEncoder = new TestJavaScriptEncoder(),
Src = "/js/site.js",
- Cache = MakeCache(),
};
// Act
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs
index f299d9b3c8..1ac161a1b6 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/SelectTagHelperTest.cs
@@ -224,10 +224,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
}
};
var viewContext = TestableHtmlGenerator.GetViewContext(model, htmlGenerator, metadataProvider);
- var tagHelper = new SelectTagHelper
+ var tagHelper = new SelectTagHelper(htmlGenerator)
{
For = modelExpression,
- Generator = htmlGenerator,
ViewContext = viewContext,
};
@@ -319,10 +318,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
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
+
+ var tagHelper = new SelectTagHelper(htmlGenerator)
{
For = modelExpression,
- Generator = htmlGenerator,
Items = items,
ViewContext = viewContext,
};
@@ -422,10 +421,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
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
+
+ var tagHelper = new SelectTagHelper(htmlGenerator)
{
For = modelExpression,
- Generator = htmlGenerator,
Items = items,
ViewContext = viewContext,
};
@@ -519,11 +518,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
.Returns((TagBuilder)null)
.Verifiable();
- var tagHelper = new SelectTagHelper
+ var tagHelper = new SelectTagHelper(htmlGenerator.Object)
{
For = modelExpression,
Items = inputItems,
- Generator = htmlGenerator.Object,
ViewContext = viewContext,
};
@@ -593,10 +591,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
.Returns((TagBuilder)null)
.Verifiable();
- var tagHelper = new SelectTagHelper
+ var tagHelper = new SelectTagHelper(htmlGenerator.Object)
{
For = modelExpression,
- Generator = htmlGenerator.Object,
ViewContext = viewContext,
};
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs
index 4e3da61406..4d5009768e 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs
@@ -106,9 +106,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var propertyMetadata = metadataProvider.GetMetadataForProperty(containerType, "Text");
var modelExplorer = containerExplorer.GetExplorerForExpression(propertyMetadata, model);
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider)
+ {
+ ValidationAttributes =
+ {
+ { "valid", "from validation attributes" },
+ }
+ };
+
// Property name is either nameof(Model.Text) or nameof(NestedModel.Text).
var modelExpression = new ModelExpression(nameAndId.Name, modelExplorer);
- var tagHelper = new TextAreaTagHelper
+ var tagHelper = new TextAreaTagHelper(htmlGenerator)
{
For = modelExpression,
};
@@ -134,16 +142,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
};
output.Content.SetContent("original content");
- var htmlGenerator = new TestableHtmlGenerator(metadataProvider)
- {
- ValidationAttributes =
- {
- { "valid", "from validation attributes" },
- }
- };
var viewContext = TestableHtmlGenerator.GetViewContext(model, htmlGenerator, metadataProvider);
tagHelper.ViewContext = viewContext;
- tagHelper.Generator = htmlGenerator;
// Act
await tagHelper.ProcessAsync(tagHelperContext, output);
diff --git a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs
index bf443495c4..516972fd40 100644
--- a/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs
@@ -25,7 +25,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
var expectedTagName = "not-span";
var metadataProvider = new TestModelMetadataProvider();
var modelExpression = CreateModelExpression("Name");
- var validationMessageTagHelper = new ValidationMessageTagHelper
+ var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
+ var validationMessageTagHelper = new ValidationMessageTagHelper(htmlGenerator)
{
For = modelExpression
};
@@ -57,12 +59,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
output.PreContent.SetContent(expectedPreContent);
output.Content.SetContent(expectedContent);
output.PostContent.SetContent(expectedPostContent);
- var htmlGenerator = new TestableHtmlGenerator(metadataProvider);
+
var viewContext = TestableHtmlGenerator.GetViewContext(model: null,
htmlGenerator: htmlGenerator,
metadataProvider: metadataProvider);
validationMessageTagHelper.ViewContext = viewContext;
- validationMessageTagHelper.Generator = htmlGenerator;
// Act
await validationMessageTagHelper.ProcessAsync(tagHelperContext, output);
@@ -87,7 +88,15 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
public async Task ProcessAsync_CallsIntoGenerateValidationMessageWithExpectedParameters()
{
// Arrange
- var validationMessageTagHelper = new ValidationMessageTagHelper
+ var expectedViewContext = CreateViewContext();
+ var generator = new Mock();
+ generator
+ .Setup(mock =>
+ mock.GenerateValidationMessage(expectedViewContext, "Hello", null, null, null))
+ .Returns(new TagBuilder("span", new CommonTestEncoder()))
+ .Verifiable();
+
+ var validationMessageTagHelper = new ValidationMessageTagHelper(generator.Object)
{
For = CreateModelExpression("Hello")
};
@@ -112,14 +121,6 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
output.Content.SetContent(expectedContent);
output.PostContent.SetContent(expectedPostContent);
- var expectedViewContext = CreateViewContext();
- var generator = new Mock();
- generator
- .Setup(mock =>
- mock.GenerateValidationMessage(expectedViewContext, "Hello", null, null, null))
- .Returns(new TagBuilder("span", new CommonTestEncoder()))
- .Verifiable();
- validationMessageTagHelper.Generator = generator.Object;
validationMessageTagHelper.ViewContext = expectedViewContext;
// Act & Assert
@@ -141,7 +142,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
string childContent, string outputContent, string expectedOutputContent)
{
// Arrange
- var validationMessageTagHelper = new ValidationMessageTagHelper
+ var tagBuilder = new TagBuilder("span2", new CommonTestEncoder())
+ {
+ InnerHtml = "New HTML"
+ };
+ tagBuilder.Attributes.Add("data-foo", "bar");
+ tagBuilder.Attributes.Add("data-hello", "world");
+
+ var generator = new Mock(MockBehavior.Strict);
+ var setup = generator
+ .Setup(mock => mock.GenerateValidationMessage(
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny(),
+ It.IsAny