React to aspnet/Razor#571.
- Changed all `GetChildContentAsync` calls to come from `TagHelperOutput` instead of `TagHelperContext`. - Updated `ReaderAtEndOfFormTagHelper` to properly detect changes inside of a `Form`s body by calling the `Init` method. - Add test to `RenderAtEndOfFormTagHelperTest`. aspnet/Razor#571
This commit is contained in:
parent
0e25470660
commit
0ae83a25e9
|
|
@ -158,7 +158,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// created within this scope get copied to this scope.
|
||||
using (var link = MemoryCache.CreateLinkingScope())
|
||||
{
|
||||
result = await context.GetChildContentAsync();
|
||||
result = await output.GetChildContentAsync();
|
||||
|
||||
MemoryCache.Set(key, result, GetMemoryCacheEntryOptions(link));
|
||||
}
|
||||
|
|
@ -173,7 +173,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
}
|
||||
else
|
||||
{
|
||||
result = await context.GetChildContentAsync();
|
||||
result = await output.GetChildContentAsync();
|
||||
output.Content.SetContent(result);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// </label>
|
||||
if (!output.IsContentModified)
|
||||
{
|
||||
var childContent = await context.GetChildContentAsync();
|
||||
var childContent = await output.GetChildContentAsync();
|
||||
|
||||
if (childContent.IsWhiteSpace)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
}
|
||||
else
|
||||
{
|
||||
var childContent = await context.GetChildContentAsync();
|
||||
var childContent = await output.GetChildContentAsync();
|
||||
selected = encodedValues.Contains(childContent.GetContent());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
[ViewContext]
|
||||
public ViewContext ViewContext { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Init(TagHelperContext context)
|
||||
{
|
||||
// Push the new FormContext.
|
||||
ViewContext.FormContext = new FormContext
|
||||
{
|
||||
CanRenderAtEndOfForm = true
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
|
|
@ -37,13 +47,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
throw new ArgumentNullException(nameof(output));
|
||||
}
|
||||
|
||||
// Push the new FormContext.
|
||||
ViewContext.FormContext = new FormContext
|
||||
{
|
||||
CanRenderAtEndOfForm = true
|
||||
};
|
||||
|
||||
await context.GetChildContentAsync();
|
||||
await output.GetChildContentAsync();
|
||||
|
||||
var formContext = ViewContext.FormContext;
|
||||
if (formContext.HasEndOfFormContent)
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// </span>
|
||||
if (!output.IsContentModified)
|
||||
{
|
||||
var childContent = await context.GetChildContentAsync();
|
||||
var childContent = await output.GetChildContentAsync();
|
||||
|
||||
if (childContent.IsWhiteSpace)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1663,7 +1663,10 @@ namespace Microsoft.AspNet.Mvc.Razor
|
|||
},
|
||||
startTagHelperWritingScope: () => { },
|
||||
endTagHelperWritingScope: () => defaultTagHelperContent);
|
||||
tagHelperExecutionContext.Output = new TagHelperOutput("p", new TagHelperAttributeList());
|
||||
tagHelperExecutionContext.Output = new TagHelperOutput(
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
if (childContentRetrieved)
|
||||
{
|
||||
await tagHelperExecutionContext.GetChildContentAsync(useCachedResult: true);
|
||||
|
|
@ -1695,7 +1698,10 @@ namespace Microsoft.AspNet.Mvc.Razor
|
|||
executeChildContentAsync: () => { return Task.FromResult(result: true); },
|
||||
startTagHelperWritingScope: () => { },
|
||||
endTagHelperWritingScope: () => new DefaultTagHelperContent());
|
||||
tagHelperExecutionContext.Output = new TagHelperOutput("p", new TagHelperAttributeList());
|
||||
tagHelperExecutionContext.Output = new TagHelperOutput(
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
tagHelperExecutionContext.Output.Content.AppendEncoded("Hello World!");
|
||||
|
||||
// Act
|
||||
|
|
@ -1749,7 +1755,10 @@ namespace Microsoft.AspNet.Mvc.Razor
|
|||
string postContent,
|
||||
string postElement)
|
||||
{
|
||||
var output = new TagHelperOutput(tagName, attributes)
|
||||
var output = new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()))
|
||||
{
|
||||
TagMode = tagMode
|
||||
};
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "href", url }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var urlHelperMock = new Mock<IUrlHelper>();
|
||||
urlHelperMock
|
||||
.Setup(urlHelper => urlHelper.Content(It.IsAny<string>()))
|
||||
|
|
@ -63,8 +64,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
tagHelper.Process(context, tagHelperOutput);
|
||||
|
|
@ -108,7 +108,8 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "href", url }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var urlHelperMock = new Mock<IUrlHelper>();
|
||||
urlHelperMock
|
||||
.Setup(urlHelper => urlHelper.Content(It.IsAny<string>()))
|
||||
|
|
@ -119,8 +120,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
tagHelper.Process(context, tagHelperOutput);
|
||||
|
|
@ -141,15 +141,15 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "href", true }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var tagHelper = new UrlResolutionTagHelper(urlHelper: null, htmlEncoder: null);
|
||||
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
tagHelper.Process(context, tagHelperOutput);
|
||||
|
|
@ -178,7 +178,8 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "href", new HtmlString(relativeUrl) }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var urlHelperMock = new Mock<IUrlHelper>();
|
||||
urlHelperMock
|
||||
.Setup(urlHelper => urlHelper.Content(It.IsAny<string>()))
|
||||
|
|
@ -189,8 +190,7 @@ namespace Microsoft.AspNet.Mvc.Razor.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<InvalidOperationException>(
|
||||
|
|
|
|||
|
|
@ -37,18 +37,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{ "asp-protocol", "http" }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "id", "myanchor" },
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
output.Content.SetContent("Something");
|
||||
|
||||
|
|
@ -94,16 +94,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"a",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"a",
|
||||
attributes: new TagHelperAttributeList());
|
||||
output.Content.SetContent(string.Empty);
|
||||
|
||||
var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
|
|
@ -142,16 +142,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"a",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"a",
|
||||
attributes: new TagHelperAttributeList());
|
||||
output.Content.SetContent(string.Empty);
|
||||
|
||||
var generator = new Mock<IHtmlGenerator>();
|
||||
|
|
@ -205,7 +205,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "href", "http://www.contoso.com" }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
if (propertyName == "asp-route-")
|
||||
{
|
||||
anchorTagHelper.RouteValues.Add("name", "value");
|
||||
|
|
@ -224,8 +225,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
var ex = await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
|
|
@ -251,7 +251,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
typeof(AnchorTagHelper).GetProperty(propertyName).SetValue(anchorTagHelper, "Home");
|
||||
var output = new TagHelperOutput(
|
||||
"a",
|
||||
attributes: new TagHelperAttributeList());
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var expectedErrorMessage = "Cannot determine an 'href' attribute for <a>. An <a> with a specified " +
|
||||
"'asp-route' must not have an 'asp-action' or 'asp-controller' attribute.";
|
||||
|
||||
|
|
@ -259,8 +260,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
var ex = await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
|
|
|
|||
|
|
@ -259,8 +259,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
object cacheResult;
|
||||
cache.Setup(c => c.TryGetValue(It.IsAny<string>(), out cacheResult))
|
||||
.Returns(false);
|
||||
var tagHelperContext = GetTagHelperContext(id, childContent);
|
||||
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList());
|
||||
var tagHelperContext = GetTagHelperContext(id);
|
||||
var tagHelperOutput = GetTagHelperOutput(
|
||||
attributes: new TagHelperAttributeList(),
|
||||
childContent: childContent);
|
||||
var cacheTagHelper = new CacheTagHelper(cache.Object)
|
||||
{
|
||||
ViewContext = GetViewContext(),
|
||||
|
|
@ -298,8 +300,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
object cacheResult;
|
||||
cache.Setup(c => c.TryGetValue(It.IsAny<string>(), out cacheResult))
|
||||
.Returns(false);
|
||||
var tagHelperContext = GetTagHelperContext(id, childContent);
|
||||
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList());
|
||||
var tagHelperContext = GetTagHelperContext(id);
|
||||
var tagHelperOutput = GetTagHelperOutput(
|
||||
attributes: new TagHelperAttributeList(),
|
||||
childContent: childContent);
|
||||
var cacheTagHelper = new CacheTagHelper(cache.Object)
|
||||
{
|
||||
ViewContext = GetViewContext(),
|
||||
|
|
@ -328,8 +332,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var id = "unique-id";
|
||||
var childContent = "original-child-content";
|
||||
var cache = new MemoryCache(new MemoryCacheOptions());
|
||||
var tagHelperContext1 = GetTagHelperContext(id, childContent);
|
||||
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList());
|
||||
var tagHelperContext1 = GetTagHelperContext(id);
|
||||
var tagHelperOutput1 = GetTagHelperOutput(
|
||||
attributes: new TagHelperAttributeList(),
|
||||
childContent: childContent);
|
||||
var cacheTagHelper1 = new CacheTagHelper(cache)
|
||||
{
|
||||
VaryByQuery = "key1,key2",
|
||||
|
|
@ -348,8 +354,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
Assert.Equal(childContent, tagHelperOutput1.Content.GetContent());
|
||||
|
||||
// Arrange - 2
|
||||
var tagHelperContext2 = GetTagHelperContext(id, "different-content");
|
||||
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList());
|
||||
var tagHelperContext2 = GetTagHelperContext(id);
|
||||
var tagHelperOutput2 = GetTagHelperOutput(
|
||||
attributes: new TagHelperAttributeList(),
|
||||
childContent: "different-content");
|
||||
var cacheTagHelper2 = new CacheTagHelper(cache)
|
||||
{
|
||||
VaryByQuery = "key1,key2",
|
||||
|
|
@ -375,8 +383,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var id = "unique-id";
|
||||
var childContent1 = "original-child-content";
|
||||
var cache = new MemoryCache(new MemoryCacheOptions());
|
||||
var tagHelperContext1 = GetTagHelperContext(id, childContent1);
|
||||
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext1 = GetTagHelperContext(id);
|
||||
var tagHelperOutput1 = GetTagHelperOutput(childContent: childContent1);
|
||||
tagHelperOutput1.PreContent.Append("<cache>");
|
||||
tagHelperOutput1.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper1 = new CacheTagHelper(cache)
|
||||
|
|
@ -397,8 +405,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
|
||||
// Arrange - 2
|
||||
var childContent2 = "different-content";
|
||||
var tagHelperContext2 = GetTagHelperContext(id, childContent2);
|
||||
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext2 = GetTagHelperContext(id);
|
||||
var tagHelperOutput2 = GetTagHelperOutput(childContent: childContent2);
|
||||
tagHelperOutput2.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput2.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper2 = new CacheTagHelper(cache)
|
||||
|
|
@ -565,8 +573,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
clock.SetupGet(p => p.UtcNow)
|
||||
.Returns(() => currentTime);
|
||||
var cache = new MemoryCache(new MemoryCacheOptions { Clock = clock.Object });
|
||||
var tagHelperContext1 = GetTagHelperContext(id, childContent1);
|
||||
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext1 = GetTagHelperContext(id);
|
||||
var tagHelperOutput1 = GetTagHelperOutput(childContent: childContent1);
|
||||
tagHelperOutput1.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput1.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper1 = new CacheTagHelper(cache)
|
||||
|
|
@ -586,8 +594,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
|
||||
// Arrange - 2
|
||||
var childContent2 = "different-content";
|
||||
var tagHelperContext2 = GetTagHelperContext(id, childContent2);
|
||||
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext2 = GetTagHelperContext(id);
|
||||
var tagHelperOutput2 = GetTagHelperOutput(childContent: childContent2);
|
||||
tagHelperOutput2.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput2.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper2 = new CacheTagHelper(cache)
|
||||
|
|
@ -618,8 +626,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
clock.SetupGet(p => p.UtcNow)
|
||||
.Returns(() => currentTime);
|
||||
var cache = new MemoryCache(new MemoryCacheOptions { Clock = clock.Object });
|
||||
var tagHelperContext1 = GetTagHelperContext(id, childContent1);
|
||||
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext1 = GetTagHelperContext(id);
|
||||
var tagHelperOutput1 = GetTagHelperOutput(childContent: childContent1);
|
||||
tagHelperOutput1.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput1.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper1 = new CacheTagHelper(cache)
|
||||
|
|
@ -640,8 +648,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// Arrange - 2
|
||||
currentTime = currentTime.AddMinutes(5).AddSeconds(2);
|
||||
var childContent2 = "different-content";
|
||||
var tagHelperContext2 = GetTagHelperContext(id, childContent2);
|
||||
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext2 = GetTagHelperContext(id);
|
||||
var tagHelperOutput2 = GetTagHelperOutput(childContent: childContent2);
|
||||
tagHelperOutput2.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput2.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper2 = new CacheTagHelper(cache)
|
||||
|
|
@ -671,8 +679,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
clock.SetupGet(p => p.UtcNow)
|
||||
.Returns(() => currentTime);
|
||||
var cache = new MemoryCache(new MemoryCacheOptions { Clock = clock.Object });
|
||||
var tagHelperContext1 = GetTagHelperContext(id, childContent1);
|
||||
var tagHelperOutput1 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext1 = GetTagHelperContext(id);
|
||||
var tagHelperOutput1 = GetTagHelperOutput(childContent: childContent1);
|
||||
tagHelperOutput1.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput1.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper1 = new CacheTagHelper(cache)
|
||||
|
|
@ -693,8 +701,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// Arrange - 2
|
||||
currentTime = currentTime.AddSeconds(35);
|
||||
var childContent2 = "different-content";
|
||||
var tagHelperContext2 = GetTagHelperContext(id, childContent2);
|
||||
var tagHelperOutput2 = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
var tagHelperContext2 = GetTagHelperContext(id);
|
||||
var tagHelperOutput2 = GetTagHelperOutput(childContent: childContent2);
|
||||
tagHelperOutput2.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput2.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper2 = new CacheTagHelper(cache)
|
||||
|
|
@ -727,11 +735,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList(),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: id,
|
||||
uniqueId: id);
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"cache",
|
||||
new TagHelperAttributeList { { "attr", "value" } },
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
TagHelperContent tagHelperContent;
|
||||
if(!cache.TryGetValue("key1", out tagHelperContent))
|
||||
if (!cache.TryGetValue("key1", out tagHelperContent))
|
||||
{
|
||||
tagHelperContent = expectedContent;
|
||||
cache.Set("key1", tagHelperContent, cacheEntryOptions);
|
||||
|
|
@ -739,7 +750,6 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
|
||||
return Task.FromResult(tagHelperContent);
|
||||
});
|
||||
var tagHelperOutput = new TagHelperOutput("cache", new TagHelperAttributeList { { "attr", "value" } });
|
||||
tagHelperOutput.PreContent.SetContent("<cache>");
|
||||
tagHelperOutput.PostContent.SetContent("</cache>");
|
||||
var cacheTagHelper = new CacheTagHelper(cache)
|
||||
|
|
@ -778,14 +788,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
new HtmlHelperOptions());
|
||||
}
|
||||
|
||||
private static TagHelperContext GetTagHelperContext(
|
||||
string id = "testid",
|
||||
string childContent = "some child content")
|
||||
private static TagHelperContext GetTagHelperContext(string id = "testid")
|
||||
{
|
||||
return new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList(),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: id,
|
||||
uniqueId: id);
|
||||
}
|
||||
|
||||
private static TagHelperOutput GetTagHelperOutput(
|
||||
string tagName = "cache",
|
||||
TagHelperAttributeList attributes = null,
|
||||
string childContent = "some child content")
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList { { "attr", "value" } };
|
||||
|
||||
return new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
|
|
|
|||
|
|
@ -80,10 +80,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
|
|||
{
|
||||
// Arrange
|
||||
var content = "content";
|
||||
var context = MakeTagHelperContext(
|
||||
attributes: new TagHelperAttributeList { { "names", namesAttribute } },
|
||||
content: content);
|
||||
var output = MakeTagHelperOutput("environment");
|
||||
var context = MakeTagHelperContext(attributes: new TagHelperAttributeList { { "names", namesAttribute } });
|
||||
var output = MakeTagHelperOutput("environment", childContent: content);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupProperty(h => h.EnvironmentName);
|
||||
hostingEnvironment.Object.EnvironmentName = environmentName;
|
||||
|
|
@ -108,9 +106,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
|
|||
// Arrange
|
||||
var content = "content";
|
||||
var context = MakeTagHelperContext(
|
||||
attributes: new TagHelperAttributeList { { "names", namesAttribute } },
|
||||
content: content);
|
||||
var output = MakeTagHelperOutput("environment");
|
||||
attributes: new TagHelperAttributeList { { "names", namesAttribute } });
|
||||
var output = MakeTagHelperOutput("environment", childContent: content);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupProperty(h => h.EnvironmentName);
|
||||
hostingEnvironment.Object.EnvironmentName = environmentName;
|
||||
|
|
@ -127,29 +124,32 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
|
|||
Assert.False(output.IsContentModified);
|
||||
}
|
||||
|
||||
private TagHelperContext MakeTagHelperContext(
|
||||
TagHelperAttributeList attributes = null,
|
||||
string content = null)
|
||||
private TagHelperContext MakeTagHelperContext(TagHelperAttributeList attributes = null)
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperContext(
|
||||
attributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: Guid.NewGuid().ToString("N"),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(content);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: Guid.NewGuid().ToString("N"));
|
||||
}
|
||||
|
||||
private TagHelperOutput MakeTagHelperOutput(string tagName, TagHelperAttributeList attributes = null)
|
||||
private TagHelperOutput MakeTagHelperOutput(
|
||||
string tagName,
|
||||
TagHelperAttributeList attributes = null,
|
||||
string childContent = null)
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperOutput(tagName, attributes);
|
||||
return new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(childContent);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -42,18 +42,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{ "asp-antiforgery", true }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "id", "myform" },
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
output.PostContent.SetContent("Something");
|
||||
var urlHelper = new Mock<IUrlHelper>();
|
||||
|
|
@ -111,16 +111,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
generator
|
||||
.Setup(mock => mock.GenerateForm(
|
||||
|
|
@ -162,17 +162,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var expectedAttribute = new TagHelperAttribute("asp-ROUTEE-NotRoute", "something");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var expectedAttribute = new TagHelperAttribute("asp-ROUTEE-NotRoute", "something");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
output.Attributes.Add(expectedAttribute);
|
||||
|
||||
var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
|
|
@ -234,16 +234,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
generator
|
||||
.Setup(mock => mock.GenerateForm(
|
||||
|
|
@ -285,16 +285,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
generator
|
||||
.Setup(mock => mock.GenerateRouteForm(
|
||||
|
|
@ -350,22 +350,23 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
ViewContext = viewContext,
|
||||
};
|
||||
|
||||
var output = new TagHelperOutput("form",
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "aCTiON", "my-action" },
|
||||
});
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
var output = new TagHelperOutput(
|
||||
tagName: "form",
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "aCTiON", "my-action" },
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test");
|
||||
|
||||
|
||||
// Act
|
||||
|
|
@ -394,7 +395,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "action", "my-action" },
|
||||
});
|
||||
},
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
if (propertyName == "asp-route-")
|
||||
{
|
||||
formTagHelper.RouteValues.Add("name", "value");
|
||||
|
|
@ -412,8 +414,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
var ex = await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
|
|
@ -435,7 +436,8 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
typeof(FormTagHelper).GetProperty(propertyName).SetValue(formTagHelper, "Home");
|
||||
var output = new TagHelperOutput(
|
||||
"form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
var expectedErrorMessage = "Cannot determine an 'action' attribute for <form>. A <form> with a specified " +
|
||||
"'asp-route' must not have an 'asp-action' or 'asp-controller' attribute.";
|
||||
|
||||
|
|
@ -443,8 +445,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
var ex = await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
|
|
|
|||
|
|
@ -51,7 +51,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{ "alt", new HtmlString("Testing") },
|
||||
{ "src", srcOutput },
|
||||
};
|
||||
var output = new TagHelperOutput("img", outputAttributes);
|
||||
var output = new TagHelperOutput(
|
||||
"img",
|
||||
outputAttributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var hostingEnvironment = MakeHostingEnvironment();
|
||||
var viewContext = MakeViewContext();
|
||||
var urlHelper = new Mock<IUrlHelper>();
|
||||
|
|
@ -273,20 +276,22 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
return new TagHelperContext(
|
||||
attributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: Guid.NewGuid().ToString("N"),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(default(string));
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: Guid.NewGuid().ToString("N"));
|
||||
}
|
||||
|
||||
private static TagHelperOutput MakeImageTagHelperOutput(TagHelperAttributeList attributes)
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperOutput("img", attributes);
|
||||
return new TagHelperOutput(
|
||||
"img",
|
||||
attributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(default(string));
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
}
|
||||
|
||||
private static IHostingEnvironment MakeHostingEnvironment()
|
||||
|
|
|
|||
|
|
@ -91,9 +91,11 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(result: null));
|
||||
var output = new TagHelperOutput(originalTagName, outputAttributes)
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
originalTagName,
|
||||
outputAttributes,
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(result: null))
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -195,18 +197,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagOnly,
|
||||
};
|
||||
|
|
@ -257,18 +261,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
originalTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(originalTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -354,18 +360,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var context = new TagHelperContext(
|
||||
allAttributes: contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagOnly,
|
||||
};
|
||||
|
|
@ -453,18 +461,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var context = new TagHelperContext(
|
||||
allAttributes: contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagOnly,
|
||||
};
|
||||
|
|
@ -549,18 +559,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var context = new TagHelperContext(
|
||||
allAttributes: contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagOnly,
|
||||
};
|
||||
|
|
@ -656,18 +668,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var context = new TagHelperContext(
|
||||
allAttributes: contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var originalAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagOnly,
|
||||
};
|
||||
|
|
@ -774,10 +788,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
uniqueId: "test");
|
||||
|
||||
var output = new TagHelperOutput(expectedTagName, attributes: new TagHelperAttributeList())
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()))
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -855,10 +871,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
uniqueId: "test");
|
||||
|
||||
var output = new TagHelperOutput(expectedTagName, attributes: new TagHelperAttributeList())
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()))
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -128,13 +128,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Internal
|
|||
return new TagHelperContext(
|
||||
attributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: Guid.NewGuid().ToString("N"),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.Append(content);
|
||||
return Task.FromResult((TagHelperContent)tagHelperContent);
|
||||
});
|
||||
uniqueId: Guid.NewGuid().ToString("N"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -194,18 +194,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var htmlAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
htmlAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.AppendEncoded(tagHelperOutputContent.OriginalChildContent);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var htmlAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, htmlAttributes);
|
||||
output.PreContent.AppendEncoded(expectedPreContent);
|
||||
output.PostContent.AppendEncoded(expectedPostContent);
|
||||
|
||||
|
|
|
|||
|
|
@ -831,29 +831,24 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
return viewContext;
|
||||
}
|
||||
|
||||
private static TagHelperContext MakeTagHelperContext(
|
||||
TagHelperAttributeList attributes = null,
|
||||
string content = null)
|
||||
private static TagHelperContext MakeTagHelperContext(TagHelperAttributeList attributes = null)
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperContext(
|
||||
attributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: Guid.NewGuid().ToString("N"),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(content);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: Guid.NewGuid().ToString("N"));
|
||||
}
|
||||
|
||||
private static TagHelperOutput MakeTagHelperOutput(string tagName, TagHelperAttributeList attributes = null)
|
||||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperOutput(tagName, attributes);
|
||||
return new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
}
|
||||
|
||||
private static IHostingEnvironment MakeHostingEnvironment()
|
||||
|
|
|
|||
|
|
@ -398,15 +398,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagHelperOutput.TagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
// GetChildContentAsync should not be invoked since we are setting the content below.
|
||||
Assert.True(false);
|
||||
return Task.FromResult<TagHelperContent>(null);
|
||||
});
|
||||
|
||||
var output = new TagHelperOutput(expectedTagHelperOutput.TagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagAndEndTag
|
||||
};
|
||||
|
|
@ -467,14 +469,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
originalTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(originalContent);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(originalTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagAndEndTag,
|
||||
};
|
||||
|
|
@ -528,15 +532,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
|
||||
var output = new TagHelperOutput(
|
||||
originalTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(originalContent);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
|
||||
var output = new TagHelperOutput(originalTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.StartTagAndEndTag,
|
||||
};
|
||||
|
|
@ -560,7 +566,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
private static TagHelperOutput GetTagHelperOutput(
|
||||
string tagName, TagHelperAttributeList attributes, string content)
|
||||
{
|
||||
var tagHelperOutput = new TagHelperOutput(tagName, attributes);
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
tagHelperOutput.Content.SetContent(content);
|
||||
|
||||
return tagHelperOutput;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.Mvc.Rendering;
|
||||
using Microsoft.AspNet.Mvc.ViewFeatures;
|
||||
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
|
||||
using Microsoft.AspNet.Razor.TagHelpers;
|
||||
using Xunit;
|
||||
|
|
@ -42,19 +43,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
|
||||
[Theory]
|
||||
[MemberData(nameof(RenderAtEndOfFormTagHelperData))]
|
||||
public async Task Process_AddsHiddenInputTag_FromEndOfFormContent(List<TagBuilder> tagBuilderList, string expectedOutput)
|
||||
public async Task Process_AddsHiddenInputTag_FromEndOfFormContent(
|
||||
List<TagBuilder> tagBuilderList,
|
||||
string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var viewContext = new ViewContext();
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
tagName: "form",
|
||||
attributes: new TagHelperAttributeList());
|
||||
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>(),
|
||||
new Dictionary<object, object>(),
|
||||
"someId",
|
||||
(useCachedResult) =>
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (useCachedResult) =>
|
||||
{
|
||||
Assert.True(viewContext.FormContext.CanRenderAtEndOfForm);
|
||||
foreach (var item in tagBuilderList)
|
||||
|
|
@ -65,10 +63,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
return Task.FromResult<TagHelperContent>(new DefaultTagHelperContent());
|
||||
});
|
||||
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>(),
|
||||
new Dictionary<object, object>(),
|
||||
"someId");
|
||||
|
||||
var tagHelper = new RenderAtEndOfFormTagHelper
|
||||
{
|
||||
ViewContext = viewContext
|
||||
};
|
||||
tagHelper.Init(tagHelperContext);
|
||||
|
||||
// Act
|
||||
await tagHelper.ProcessAsync(context: tagHelperContext, output: tagHelperOutput);
|
||||
|
|
@ -77,6 +81,46 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
Assert.Equal(expectedOutput, tagHelperOutput.PostContent.GetContent());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RenderAtEndOfFormTagHelperData))]
|
||||
public async Task Process_AddsHiddenInputTag_FromEndOfFormContent_WithCachedBody(
|
||||
List<TagBuilder> tagBuilderList,
|
||||
string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var viewContext = new ViewContext();
|
||||
var runner = new TagHelperRunner();
|
||||
var tagHelperExecutionContext = new TagHelperExecutionContext(
|
||||
"form",
|
||||
TagMode.StartTagAndEndTag,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: string.Empty,
|
||||
executeChildContentAsync: () =>
|
||||
{
|
||||
foreach (var item in tagBuilderList)
|
||||
{
|
||||
viewContext.FormContext.EndOfFormContent.Add(item);
|
||||
}
|
||||
|
||||
return Task.FromResult(true);
|
||||
},
|
||||
startTagHelperWritingScope: () => { },
|
||||
endTagHelperWritingScope: () => new DefaultTagHelperContent());
|
||||
|
||||
// This TagHelper will pre-execute the child content forcing the body to be cached.
|
||||
tagHelperExecutionContext.Add(new ChildContentInvoker());
|
||||
tagHelperExecutionContext.Add(new RenderAtEndOfFormTagHelper
|
||||
{
|
||||
ViewContext = viewContext
|
||||
});
|
||||
|
||||
// Act
|
||||
var output = await runner.RunAsync(tagHelperExecutionContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(expectedOutput, output.PostContent.GetContent());
|
||||
}
|
||||
|
||||
private static TagBuilder GetTagBuilder(string tag, string name, string type, string value, TagRenderMode mode)
|
||||
{
|
||||
var tagBuilder = new TagBuilder(tag);
|
||||
|
|
@ -87,5 +131,21 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
|
||||
return tagBuilder;
|
||||
}
|
||||
|
||||
private class ChildContentInvoker : TagHelper
|
||||
{
|
||||
public override int Order
|
||||
{
|
||||
get
|
||||
{
|
||||
return int.MinValue;
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
await output.GetChildContentAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -907,13 +907,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
return new TagHelperContext(
|
||||
attributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: Guid.NewGuid().ToString("N"),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent(content);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: Guid.NewGuid().ToString("N"));
|
||||
}
|
||||
|
||||
private static ViewContext MakeViewContext(string requestPathBase = null)
|
||||
|
|
@ -941,7 +935,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
attributes = attributes ?? new TagHelperAttributeList();
|
||||
|
||||
return new TagHelperOutput(tagName, attributes);
|
||||
return new TagHelperOutput(
|
||||
tagName,
|
||||
attributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
}
|
||||
|
||||
private TagHelperLogger<ScriptTagHelper> CreateLogger()
|
||||
|
|
|
|||
|
|
@ -204,14 +204,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -291,14 +293,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.AppendEncoded("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -393,14 +397,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.AppendEncoded("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
@ -479,15 +485,17 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
|
||||
var output = new TagHelperOutput(expectedTagName, originalAttributes);
|
||||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
string model = null;
|
||||
var modelExplorer = metadataProvider.GetModelExplorerForType(typeof(string), model);
|
||||
|
|
@ -558,14 +566,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var tagHelperContext = new TagHelperContext(
|
||||
contextAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
tagName,
|
||||
originalAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(tagName, originalAttributes);
|
||||
var metadataProvider = new EmptyModelMetadataProvider();
|
||||
var modelExplorer = metadataProvider.GetModelExplorerForType(modelType, model);
|
||||
var modelExpression = new ModelExpression(propertyName, modelExplorer);
|
||||
|
|
|
|||
|
|
@ -334,12 +334,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
IEnumerable<TagHelperAttribute> expectedAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var output = new TagHelperOutput("p", attributes: new TagHelperAttributeList(outputAttributes));
|
||||
var output = new TagHelperOutput(
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(outputAttributes),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var context = new TagHelperContext(
|
||||
allAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(result: null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
output.CopyHtmlAttribute(attributeNameToCopy, context);
|
||||
|
|
@ -432,12 +434,14 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
IEnumerable<TagHelperAttribute> expectedAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var output = new TagHelperOutput("p", attributes: new TagHelperAttributeList());
|
||||
var output = new TagHelperOutput(
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var context = new TagHelperContext(
|
||||
allAttributes,
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult => Task.FromResult<TagHelperContent>(result: null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
output.CopyHtmlAttribute(attributeNameToCopy, context);
|
||||
|
|
@ -454,20 +458,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList
|
||||
{
|
||||
{ attributeName, attributeValue }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.Append("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList
|
||||
{
|
||||
{ attributeName, attributeValue }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test");
|
||||
var expectedAttribute = new TagHelperAttribute(attributeName, attributeValue);
|
||||
|
||||
// Act
|
||||
|
|
@ -488,6 +492,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
attributes: new TagHelperAttributeList()
|
||||
{
|
||||
{ attributeName, "world2" }
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.Append("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var expectedAttribute = new TagHelperAttribute(attributeName, "world2");
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
|
|
@ -496,13 +506,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{ attributeName, "world" }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.Append("Something Else");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
tagHelperOutput.CopyHtmlAttribute(attributeName, tagHelperContext);
|
||||
|
|
@ -519,20 +523,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var invalidAttributeName = "hello2";
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "hello", "world" }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.Append("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var tagHelperContext = new TagHelperContext(
|
||||
allAttributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "hello", "world" }
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
ExceptionAssert.ThrowsArgument(
|
||||
|
|
@ -546,12 +550,13 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList()
|
||||
{
|
||||
{ "route-Hello", "World" },
|
||||
{ "Route-I", "Am" }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedAttribute = new TagHelperAttribute("type", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedAttribute);
|
||||
|
||||
|
|
@ -572,12 +577,13 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList()
|
||||
{
|
||||
{ "route-Hello", "World" },
|
||||
{ "Route-I", "Am" }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedAttribute = new TagHelperAttribute("type", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedAttribute);
|
||||
var attributes = tagHelperOutput.Attributes
|
||||
|
|
@ -596,12 +602,13 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList()
|
||||
{
|
||||
{ "route-Hello", "World" },
|
||||
{ "Route-I", "Am" }
|
||||
});
|
||||
},
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedAttribute = new TagHelperAttribute("type", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedAttribute);
|
||||
|
||||
|
|
@ -756,7 +763,10 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
TagHelperAttributeList expectedAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput("p", outputAttributes);
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
outputAttributes,
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
|
||||
var tagBuilder = new TagBuilder("p");
|
||||
foreach (var attr in tagBuilderAttributes)
|
||||
|
|
@ -779,8 +789,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedAttribute = new TagHelperAttribute("type", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedAttribute);
|
||||
|
||||
|
|
@ -800,8 +811,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
tagHelperOutput.Attributes.Add("class", "Hello");
|
||||
|
||||
var tagBuilder = new TagBuilder("p");
|
||||
|
|
@ -826,8 +838,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
tagHelperOutput.Attributes.Add(originalName, "Hello");
|
||||
|
||||
var tagBuilder = new TagBuilder("p");
|
||||
|
|
@ -846,8 +859,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
|
||||
var tagBuilder = new TagBuilder("p");
|
||||
var expectedAttribute = new TagHelperAttribute("visible", "val < 3");
|
||||
|
|
@ -866,8 +880,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
|
||||
var tagBuilder = new TagBuilder("p");
|
||||
var expectedAttribute1 = new TagHelperAttribute("class", "btn");
|
||||
|
|
@ -891,8 +906,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedAttribute = new TagHelperAttribute("class", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedAttribute);
|
||||
|
||||
|
|
@ -911,8 +927,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput(
|
||||
"p",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "p",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
var expectedOutputAttribute = new TagHelperAttribute("class", "btn");
|
||||
tagHelperOutput.Attributes.Add(expectedOutputAttribute);
|
||||
|
||||
|
|
|
|||
|
|
@ -128,18 +128,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var htmlAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
htmlAttributes,
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var htmlAttributes = new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" },
|
||||
};
|
||||
var output = new TagHelperOutput(expectedTagName, htmlAttributes)
|
||||
})
|
||||
{
|
||||
TagMode = TagMode.SelfClosing,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -47,18 +47,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
{ "for", modelExpression },
|
||||
},
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "id", "myvalidationmessage" }
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
|
|
@ -111,16 +111,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
"span",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
var output = new TagHelperOutput(
|
||||
"span",
|
||||
attributes: new TagHelperAttributeList());
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent(expectedPostContent);
|
||||
|
|
@ -167,20 +167,20 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
};
|
||||
var output = new TagHelperOutput(
|
||||
"span",
|
||||
attributes: new TagHelperAttributeList());
|
||||
output.Content.AppendEncoded(outputContent);
|
||||
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.AppendEncoded(childContent);
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
output.Content.AppendEncoded(outputContent);
|
||||
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test");
|
||||
|
||||
var viewContext = CreateViewContext();
|
||||
validationMessageTagHelper.ViewContext = viewContext;
|
||||
|
|
@ -226,13 +226,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
};
|
||||
var output = new TagHelperOutput(
|
||||
"span",
|
||||
attributes: new TagHelperAttributeList());
|
||||
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
|
|
@ -240,6 +234,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
|
||||
var context = new TagHelperContext(
|
||||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test");
|
||||
|
||||
var viewContext = CreateViewContext();
|
||||
validationMessageTagHelper.ViewContext = viewContext;
|
||||
|
||||
|
|
@ -266,8 +266,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var expectedContent = "original content";
|
||||
var expectedPostContent = "original post-content";
|
||||
var output = new TagHelperOutput(
|
||||
"span",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "span",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent(expectedPostContent);
|
||||
|
|
@ -276,8 +277,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
var viewContext = CreateViewContext();
|
||||
validationMessageTagHelper.ViewContext = viewContext;
|
||||
|
|
|
|||
|
|
@ -43,18 +43,18 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
uniqueId: "test");
|
||||
var output = new TagHelperOutput(
|
||||
expectedTagName,
|
||||
attributes: new TagHelperAttributeList
|
||||
{
|
||||
{ "class", "form-control" }
|
||||
},
|
||||
getChildContentAsync: useCachedResult =>
|
||||
{
|
||||
var tagHelperContent = new DefaultTagHelperContent();
|
||||
tagHelperContent.SetContent("Something");
|
||||
return Task.FromResult<TagHelperContent>(tagHelperContent);
|
||||
});
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
|
|
@ -110,8 +110,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var expectedContent = "original content";
|
||||
var expectedPostContent = "original post-content";
|
||||
var output = new TagHelperOutput(
|
||||
"div",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "div",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent(expectedPostContent);
|
||||
|
|
@ -122,8 +123,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act & Assert
|
||||
await validationSummaryTagHelper.ProcessAsync(context, output);
|
||||
|
|
@ -164,8 +164,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var expectedPreContent = "original pre-content";
|
||||
var expectedContent = "original content";
|
||||
var output = new TagHelperOutput(
|
||||
"div",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "div",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent("Content of validation summary");
|
||||
|
|
@ -177,8 +178,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
await validationSummaryTagHelper.ProcessAsync(context, output);
|
||||
|
|
@ -212,8 +212,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var expectedContent = "original content";
|
||||
var expectedPostContent = "original post-content";
|
||||
var output = new TagHelperOutput(
|
||||
"div",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "div",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent(expectedPostContent);
|
||||
|
|
@ -225,8 +226,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
await validationSummaryTagHelper.ProcessAsync(context, output);
|
||||
|
|
@ -267,8 +267,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
var expectedPreContent = "original pre-content";
|
||||
var expectedContent = "original content";
|
||||
var output = new TagHelperOutput(
|
||||
"div",
|
||||
attributes: new TagHelperAttributeList());
|
||||
tagName: "div",
|
||||
attributes: new TagHelperAttributeList(),
|
||||
getChildContentAsync: (_) => Task.FromResult<TagHelperContent>(new DefaultTagHelperContent()));
|
||||
output.PreContent.SetContent(expectedPreContent);
|
||||
output.Content.SetContent(expectedContent);
|
||||
output.PostContent.SetContent("Content of validation message");
|
||||
|
|
@ -280,8 +281,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
|
|||
allAttributes: new ReadOnlyTagHelperAttributeList<IReadOnlyTagHelperAttribute>(
|
||||
Enumerable.Empty<IReadOnlyTagHelperAttribute>()),
|
||||
items: new Dictionary<object, object>(),
|
||||
uniqueId: "test",
|
||||
getChildContentAsync: _ => Task.FromResult<TagHelperContent>(null));
|
||||
uniqueId: "test");
|
||||
|
||||
// Act
|
||||
await validationSummaryTagHelper.ProcessAsync(context, output);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace ActivatorWebSite.TagHelpers
|
|||
{
|
||||
(HtmlHelper as ICanHasViewContext)?.Contextualize(ViewContext);
|
||||
|
||||
var content = await context.GetChildContentAsync();
|
||||
var content = await output.GetChildContentAsync();
|
||||
output.Content.SetContent(HtmlHelper.Hidden(Name, content.GetContent(HtmlEncoder)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace ActivatorWebSite.TagHelpers
|
|||
{
|
||||
(HtmlHelper as ICanHasViewContext)?.Contextualize(ViewContext);
|
||||
|
||||
var content = await context.GetChildContentAsync();
|
||||
var content = await output.GetChildContentAsync();
|
||||
var repeatContent = HtmlHelper.Encode(Expression.Model.ToString());
|
||||
|
||||
if (string.IsNullOrEmpty(repeatContent))
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ namespace TagHelpersWebSite.TagHelpers
|
|||
{
|
||||
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
var childContent = await context.GetChildContentAsync();
|
||||
var childContent = await output.GetChildContentAsync();
|
||||
|
||||
// Find Urls in the content and replace them with their anchor tag equivalent.
|
||||
output.Content.AppendEncoded(Regex.Replace(
|
||||
|
|
|
|||
|
|
@ -33,6 +33,10 @@ namespace MvcSample.Web.Components
|
|||
|
||||
public int Order { get; } = 0;
|
||||
|
||||
public void Init(TagHelperContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
var result = await InvokeAsync(Count);
|
||||
|
|
|
|||
Loading…
Reference in New Issue