Correct an issue with codegen for taghelperprefix
The issue here is that when a taghelper prefix is in use it will be including in the HTML output, when it should be chopped off. See the diff in the codegen for examples.
This commit is contained in:
parent
d187edbd76
commit
2b2cf6efec
|
|
@ -390,9 +390,15 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
|||
Source = BuildSourceSpanFromNode(block)
|
||||
});
|
||||
|
||||
var tagName = tagHelperBlock.TagName;
|
||||
if (tagHelperBlock.Descriptors.First().Prefix != null)
|
||||
{
|
||||
tagName = tagName.Substring(tagHelperBlock.Descriptors.First().Prefix.Length);
|
||||
}
|
||||
|
||||
_builder.Push(new InitializeTagHelperStructureIRNode()
|
||||
{
|
||||
TagName = tagHelperBlock.TagName,
|
||||
TagName = tagName,
|
||||
TagMode = tagHelperBlock.TagMode
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
|||
|
||||
internal IReadOnlyList<LineMapping> LineMappings { get; set; }
|
||||
|
||||
internal IReadOnlyList<RazorError> Diagnostics { get; set; }
|
||||
public IReadOnlyList<RazorError> Diagnostics { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -194,6 +194,49 @@ namespace Microsoft.AspNetCore.Razor.Evolution.Intermediate
|
|||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Lower_TagHelpers_WithPrefix()
|
||||
{
|
||||
// Arrange
|
||||
var codeDocument = TestRazorCodeDocument.Create(@"@addTagHelper *, TestAssembly
|
||||
@tagHelperPrefix cool:
|
||||
<cool:span val=""@Hello World""></cool:span>");
|
||||
var tagHelpers = new[]
|
||||
{
|
||||
new TagHelperDescriptor
|
||||
{
|
||||
TagName = "span",
|
||||
TypeName = "SpanTagHelper",
|
||||
AssemblyName = "TestAssembly",
|
||||
}
|
||||
};
|
||||
|
||||
// Act
|
||||
var irDocument = Lower(codeDocument, tagHelpers: tagHelpers);
|
||||
|
||||
// Assert
|
||||
Children(irDocument,
|
||||
n => Checksum(n),
|
||||
n => Using("System", n),
|
||||
n => Using(typeof(Task).Namespace, n),
|
||||
n => TagHelperFieldDeclaration(n, "SpanTagHelper"),
|
||||
n =>
|
||||
{
|
||||
var tagHelperNode = Assert.IsType<TagHelperIRNode>(n);
|
||||
Children(
|
||||
tagHelperNode,
|
||||
c => TagHelperStructure("span", TagMode.StartTagAndEndTag, c), // Note: this is span not cool:span
|
||||
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
||||
c => TagHelperHtmlAttribute(
|
||||
"val",
|
||||
HtmlAttributeValueStyle.DoubleQuotes,
|
||||
c,
|
||||
v => CSharpAttributeValue(string.Empty, "Hello", v),
|
||||
v => LiteralAttributeValue(" ", "World", v)),
|
||||
c => Assert.IsType<ExecuteTagHelpersIRNode>(c));
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Lower_TagHelper_InSection()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
|||
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||
{
|
||||
WriteLiteral("\r\n<THSdiv class=\"randomNonTagHelperAttribute\">\r\n ");
|
||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("THSp", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("p", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "test", async() => {
|
||||
WriteLiteral("\r\n <p></p>\r\n <input type=\"text\">\r\n ");
|
||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("THSinput", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagOnly, "test", async() => {
|
||||
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("input", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagOnly, "test", async() => {
|
||||
}
|
||||
);
|
||||
__TestNamespace_InputTagHelper = CreateTagHelper<global::TestNamespace.InputTagHelper>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue