[Fixes #878] Removed marker nodes from IR
- Also fixed SourceMappings content length in Markup spans
This commit is contained in:
parent
c6150ba287
commit
af499794c5
|
|
@ -126,7 +126,26 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
|
|
||||||
public override void VisitEndTemplateBlock(TemplateBlockChunkGenerator chunkGenerator, Block block)
|
public override void VisitEndTemplateBlock(TemplateBlockChunkGenerator chunkGenerator, Block block)
|
||||||
{
|
{
|
||||||
Builder.Pop();
|
var templateNode = Builder.Pop();
|
||||||
|
if (templateNode.Children.Count > 0)
|
||||||
|
{
|
||||||
|
var sourceRangeStart = templateNode
|
||||||
|
.Children
|
||||||
|
.FirstOrDefault(child => child.SourceRange != null)
|
||||||
|
?.SourceRange;
|
||||||
|
|
||||||
|
if (sourceRangeStart != null)
|
||||||
|
{
|
||||||
|
var contentLength = templateNode.Children.Sum(child => child.SourceRange?.ContentLength ?? 0);
|
||||||
|
|
||||||
|
templateNode.SourceRange = new MappingLocation(
|
||||||
|
sourceRangeStart.AbsoluteIndex,
|
||||||
|
sourceRangeStart.LineIndex,
|
||||||
|
sourceRangeStart.CharacterIndex,
|
||||||
|
contentLength,
|
||||||
|
sourceRangeStart.FilePath ?? _codeDocument.Source.Filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CSharp expressions are broken up into blocks and spans because Razor allows Razor comments
|
// CSharp expressions are broken up into blocks and spans because Razor allows Razor comments
|
||||||
|
|
@ -150,19 +169,35 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
.Children
|
.Children
|
||||||
.FirstOrDefault(child => child.SourceRange != null)
|
.FirstOrDefault(child => child.SourceRange != null)
|
||||||
?.SourceRange;
|
?.SourceRange;
|
||||||
var contentLength = expressionNode.Children.Sum(child => child.SourceRange?.ContentLength ?? 0);
|
|
||||||
|
|
||||||
expressionNode.SourceRange = new MappingLocation(
|
if (sourceRangeStart != null)
|
||||||
sourceRangeStart.AbsoluteIndex,
|
{
|
||||||
sourceRangeStart.LineIndex,
|
var contentLength = expressionNode.Children.Sum(child => child.SourceRange?.ContentLength ?? 0);
|
||||||
sourceRangeStart.CharacterIndex,
|
|
||||||
contentLength,
|
expressionNode.SourceRange = new MappingLocation(
|
||||||
sourceRangeStart.FilePath ?? _codeDocument.Source.Filename);
|
sourceRangeStart.AbsoluteIndex,
|
||||||
|
sourceRangeStart.LineIndex,
|
||||||
|
sourceRangeStart.CharacterIndex,
|
||||||
|
contentLength,
|
||||||
|
sourceRangeStart.FilePath ?? _codeDocument.Source.Filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void VisitExpressionSpan(ExpressionChunkGenerator chunkGenerator, Span span)
|
public override void VisitExpressionSpan(ExpressionChunkGenerator chunkGenerator, Span span)
|
||||||
{
|
{
|
||||||
|
if (span.Symbols.Count == 1)
|
||||||
|
{
|
||||||
|
var symbol = span.Symbols[0] as CSharpSymbol;
|
||||||
|
if (symbol != null &&
|
||||||
|
symbol.Type == CSharpSymbolType.Unknown &&
|
||||||
|
symbol.Content.Length == 0)
|
||||||
|
{
|
||||||
|
// We don't want to create IR nodes for marker symbols.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Builder.Add(new CSharpTokenIRNode()
|
Builder.Add(new CSharpTokenIRNode()
|
||||||
{
|
{
|
||||||
Content = span.Content,
|
Content = span.Content,
|
||||||
|
|
@ -181,11 +216,29 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
|
|
||||||
public override void VisitMarkupSpan(MarkupChunkGenerator chunkGenerator, Span span)
|
public override void VisitMarkupSpan(MarkupChunkGenerator chunkGenerator, Span span)
|
||||||
{
|
{
|
||||||
|
if (span.Symbols.Count == 1)
|
||||||
|
{
|
||||||
|
var symbol = span.Symbols[0] as HtmlSymbol;
|
||||||
|
if (symbol != null &&
|
||||||
|
symbol.Type == HtmlSymbolType.Unknown &&
|
||||||
|
symbol.Content.Length == 0)
|
||||||
|
{
|
||||||
|
// We don't want to create IR nodes for marker symbols.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var currentChildren = Builder.Current.Children;
|
var currentChildren = Builder.Current.Children;
|
||||||
if (currentChildren.Count > 0 && currentChildren[currentChildren.Count - 1] is HtmlContentIRNode)
|
if (currentChildren.Count > 0 && currentChildren[currentChildren.Count - 1] is HtmlContentIRNode)
|
||||||
{
|
{
|
||||||
var existingHtmlContent = (HtmlContentIRNode)currentChildren[currentChildren.Count - 1];
|
var existingHtmlContent = (HtmlContentIRNode)currentChildren[currentChildren.Count - 1];
|
||||||
existingHtmlContent.Content = string.Concat(existingHtmlContent.Content, span.Content);
|
existingHtmlContent.Content = string.Concat(existingHtmlContent.Content, span.Content);
|
||||||
|
existingHtmlContent.SourceRange = new MappingLocation(
|
||||||
|
existingHtmlContent.SourceRange.AbsoluteIndex,
|
||||||
|
existingHtmlContent.SourceRange.LineIndex,
|
||||||
|
existingHtmlContent.SourceRange.CharacterIndex,
|
||||||
|
existingHtmlContent.SourceRange.ContentLength + span.Content.Length,
|
||||||
|
existingHtmlContent.SourceRange.FilePath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -316,12 +316,11 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
if (node.SourceRange != null)
|
if (node.SourceRange != null)
|
||||||
{
|
{
|
||||||
linePragmaScope = new LinePragmaWriter(Context.Writer, node.SourceRange);
|
linePragmaScope = new LinePragmaWriter(Context.Writer, node.SourceRange);
|
||||||
|
var padding = BuildOffsetPadding(Context.RenderingConventions.StartWriteMethod.Length, node.SourceRange);
|
||||||
|
Context.Writer.Write(padding);
|
||||||
}
|
}
|
||||||
|
|
||||||
var padding = BuildOffsetPadding(Context.RenderingConventions.StartWriteMethod.Length, node.SourceRange);
|
Context.Writer.Write(Context.RenderingConventions.StartWriteMethod);
|
||||||
Context.Writer
|
|
||||||
.Write(padding)
|
|
||||||
.Write(Context.RenderingConventions.StartWriteMethod);
|
|
||||||
|
|
||||||
VisitDefault(node);
|
VisitDefault(node);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,9 +95,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
node => Assert.IsType<RazorMethodDeclarationIRNode>(node),
|
node => Assert.IsType<RazorMethodDeclarationIRNode>(node),
|
||||||
node => CSharpStatement(" var value = true; ", node));
|
node => CSharpStatement(" var value = true; ", node));
|
||||||
var method = (RazorMethodDeclarationIRNode)@class.Children[0];
|
var method = (RazorMethodDeclarationIRNode)@class.Children[0];
|
||||||
Children(method,
|
Assert.Empty(method.Children);
|
||||||
node => Html(string.Empty, node),
|
|
||||||
node => Html(string.Empty, node));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -129,11 +127,9 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
var @class = @namespace.Children[2];
|
var @class = @namespace.Children[2];
|
||||||
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
||||||
Children(method,
|
Children(method,
|
||||||
node => Html(string.Empty, node),
|
|
||||||
node => CSharpStatement("DefineSection(\"Header\", async () => {", node),
|
node => CSharpStatement("DefineSection(\"Header\", async () => {", node),
|
||||||
node => Html(" <p>Hello World</p> ", node),
|
node => Html(" <p>Hello World</p> ", node),
|
||||||
node => CSharpStatement("});", node),
|
node => CSharpStatement("});", node));
|
||||||
node => Html(string.Empty, node));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -166,11 +162,9 @@ namespace Microsoft.AspNetCore.Razor.Evolution
|
||||||
var @class = @namespace.Children[2];
|
var @class = @namespace.Children[2];
|
||||||
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
||||||
Children(method,
|
Children(method,
|
||||||
node => Html(string.Empty, node),
|
|
||||||
node => CSharpStatement("DefineSection(\"Header\", async (__razor_section_writer) => {", node),
|
node => CSharpStatement("DefineSection(\"Header\", async (__razor_section_writer) => {", node),
|
||||||
node => Html(" <p>Hello World</p> ", node),
|
node => Html(" <p>Hello World</p> ", node),
|
||||||
node => CSharpStatement("});", node),
|
node => CSharpStatement("});", node));
|
||||||
node => Html(string.Empty, node));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DocumentIRNode Lower(RazorCodeDocument codeDocument)
|
private static DocumentIRNode Lower(RazorCodeDocument codeDocument)
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.Intermediate
|
||||||
n => Assert.IsType<ClassDeclarationIRNode>(n));
|
n => Assert.IsType<ClassDeclarationIRNode>(n));
|
||||||
var @class = @namespace.Children[2];
|
var @class = @namespace.Children[2];
|
||||||
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
var method = SingleChild<RazorMethodDeclarationIRNode>(@class);
|
||||||
var html = SingleChild<HtmlContentIRNode>(method);
|
Assert.Empty(method.Children);
|
||||||
|
|
||||||
Assert.Equal(string.Empty, html.Content);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,4 @@ Document -
|
||||||
UsingStatement - - System.Threading.Tasks
|
UsingStatement - - System.Threading.Tasks
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [0] CustomDirective.cshtml) -
|
|
||||||
Directive - - test_directive
|
Directive - - test_directive
|
||||||
HtmlContent - (15:0,15 [0] CustomDirective.cshtml) -
|
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,3 @@ Document -
|
||||||
UsingStatement - - System.Threading.Tasks
|
UsingStatement - - System.Threading.Tasks
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [0] Empty.cshtml) -
|
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ Document -
|
||||||
UsingStatement - - System.Threading.Tasks
|
UsingStatement - - System.Threading.Tasks
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [6] HtmlWithConditionalAttribute.cshtml) - <html>\n<body>\n <span
|
HtmlContent - (0:0,0 [25] HtmlWithConditionalAttribute.cshtml) - <html>\n<body>\n <span
|
||||||
HtmlAttribute - (25:2,9 [13] HtmlWithConditionalAttribute.cshtml) - val=" - "
|
HtmlAttribute - (25:2,9 [13] HtmlWithConditionalAttribute.cshtml) - val=" - "
|
||||||
CSharpAttributeValue - (31:2,15 [6] HtmlWithConditionalAttribute.cshtml) -
|
CSharpAttributeValue - (31:2,15 [6] HtmlWithConditionalAttribute.cshtml) -
|
||||||
CSharpExpression - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml)
|
CSharpExpression - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml)
|
||||||
CSharpToken - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml) - Hello
|
CSharpToken - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml) - Hello
|
||||||
HtmlContent - (38:2,22 [3] HtmlWithConditionalAttribute.cshtml) - />\n</body>\n</html>"
|
HtmlContent - (38:2,22 [22] HtmlWithConditionalAttribute.cshtml) - />\n</body>\n</html>"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ Document -
|
||||||
UsingStatement - - System.Threading.Tasks
|
UsingStatement - - System.Threading.Tasks
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [6] HtmlWithDataDashAttribute.cshtml) - <html>\n<body>\n <span data-val="
|
HtmlContent - (0:0,0 [36] HtmlWithDataDashAttribute.cshtml) - <html>\n<body>\n <span data-val="
|
||||||
CSharpExpression - (37:2,21 [5] HtmlWithDataDashAttribute.cshtml)
|
CSharpExpression - (37:2,21 [5] HtmlWithDataDashAttribute.cshtml)
|
||||||
CSharpToken - (37:2,21 [5] HtmlWithDataDashAttribute.cshtml) - Hello
|
CSharpToken - (37:2,21 [5] HtmlWithDataDashAttribute.cshtml) - Hello
|
||||||
HtmlContent - (42:2,26 [1] HtmlWithDataDashAttribute.cshtml) - " />\n</body>\n</html>"
|
HtmlContent - (42:2,26 [23] HtmlWithDataDashAttribute.cshtml) - " />\n</body>\n</html>"
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
public async System.Threading.Tasks.Task ExecuteAsync()
|
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
WriteLiteral("This is markup\r\n\r\n");
|
WriteLiteral("This is markup\r\n\r\n");
|
||||||
#line 3 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/EmptyExplicitExpression.cshtml"
|
Write();
|
||||||
Write();
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
}
|
}
|
||||||
#pragma warning restore 1998
|
#pragma warning restore 1998
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
public async System.Threading.Tasks.Task ExecuteAsync()
|
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
WriteLiteral("This is markup\r\n\r\n");
|
WriteLiteral("This is markup\r\n\r\n");
|
||||||
#line 3 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/EmptyImplicitExpression.cshtml"
|
Write();
|
||||||
Write();
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
WriteLiteral("!");
|
WriteLiteral("!");
|
||||||
}
|
}
|
||||||
#pragma warning restore 1998
|
#pragma warning restore 1998
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
#pragma warning disable 1998
|
#pragma warning disable 1998
|
||||||
public async System.Threading.Tasks.Task ExecuteAsync()
|
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
#line 2 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/EmptyImplicitExpressionInCode.cshtml"
|
Write();
|
||||||
Write();
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
}
|
}
|
||||||
#pragma warning restore 1998
|
#pragma warning restore 1998
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
public async System.Threading.Tasks.Task ExecuteAsync()
|
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
WriteLiteral("This is markup\r\n\r\n");
|
WriteLiteral("This is markup\r\n\r\n");
|
||||||
#line 3 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/ExplicitExpressionAtEOF.cshtml"
|
Write();
|
||||||
Write();
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
}
|
}
|
||||||
#pragma warning restore 1998
|
#pragma warning restore 1998
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
{
|
{
|
||||||
WriteLiteral("<div>");
|
WriteLiteral("<div>");
|
||||||
#line 1 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml"
|
#line 1 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml"
|
||||||
Write(item => new HelperResult(async(__razor_template_writer) => {
|
Write(item => new HelperResult(async(__razor_template_writer) => {
|
||||||
WriteLiteralTo(__razor_template_writer, "</div>");
|
WriteLiteralTo(__razor_template_writer, "</div>");
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Evolution.IntegrationTests.TestFiles
|
||||||
public async System.Threading.Tasks.Task ExecuteAsync()
|
public async System.Threading.Tasks.Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
WriteLiteral("This is markup\r\n\r\n");
|
WriteLiteral("This is markup\r\n\r\n");
|
||||||
#line 3 "TestFiles/IntegrationTests/RuntimeCodeGenerationIntegrationTest/ImplicitExpressionAtEOF.cshtml"
|
Write();
|
||||||
Write();
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
}
|
}
|
||||||
#pragma warning restore 1998
|
#pragma warning restore 1998
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ Document -
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
DeclareTagHelperFields - - PTagHelper - FormTagHelper - InputTagHelper
|
DeclareTagHelperFields - - PTagHelper - FormTagHelper - InputTagHelper
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [0] NestedTagHelpers.cshtml) -
|
|
||||||
TagHelper -
|
TagHelper -
|
||||||
InitializeTagHelperStructure - - p - TagMode.StartTagAndEndTag
|
InitializeTagHelperStructure - - p - TagMode.StartTagAndEndTag
|
||||||
HtmlContent - (43:1,12 [4] NestedTagHelpers.cshtml) - Hola
|
HtmlContent - (43:1,12 [4] NestedTagHelpers.cshtml) - Hola
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ Document -
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
DeclareTagHelperFields - - InputTagHelper
|
DeclareTagHelperFields - - InputTagHelper
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [0] SimpleTagHelpers.cshtml) - <p>Hola</p>\n<form>\n
|
HtmlContent - (31:1,0 [25] SimpleTagHelpers.cshtml) - <p>Hola</p>\n<form>\n
|
||||||
TagHelper -
|
TagHelper -
|
||||||
InitializeTagHelperStructure - - input - TagMode.SelfClosing
|
InitializeTagHelperStructure - - input - TagMode.SelfClosing
|
||||||
CreateTagHelper - - InputTagHelper
|
CreateTagHelper - - InputTagHelper
|
||||||
|
|
@ -15,4 +15,4 @@ Document -
|
||||||
AddTagHelperHtmlAttribute - - type - HtmlAttributeValueStyle.SingleQuotes
|
AddTagHelperHtmlAttribute - - type - HtmlAttributeValueStyle.SingleQuotes
|
||||||
HtmlContent - (83:3,31 [4] SimpleTagHelpers.cshtml) - text
|
HtmlContent - (83:3,31 [4] SimpleTagHelpers.cshtml) - text
|
||||||
ExecuteTagHelpers -
|
ExecuteTagHelpers -
|
||||||
HtmlContent - (91:3,39 [2] SimpleTagHelpers.cshtml) - \n</form>
|
HtmlContent - (91:3,39 [9] SimpleTagHelpers.cshtml) - \n</form>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ Document -
|
||||||
ClassDeclaration - - - - -
|
ClassDeclaration - - - - -
|
||||||
DeclareTagHelperFields - - InputTagHelper
|
DeclareTagHelperFields - - InputTagHelper
|
||||||
RazorMethodDeclaration - - - - -
|
RazorMethodDeclaration - - - - -
|
||||||
HtmlContent - (0:0,0 [0] TagHelpersWithBoundAttributes.cshtml) - <form>\n
|
HtmlContent - (31:1,0 [12] TagHelpersWithBoundAttributes.cshtml) - <form>\n
|
||||||
TagHelper -
|
TagHelper -
|
||||||
InitializeTagHelperStructure - - input - TagMode.SelfClosing
|
InitializeTagHelperStructure - - input - TagMode.SelfClosing
|
||||||
CreateTagHelper - - InputTagHelper
|
CreateTagHelper - - InputTagHelper
|
||||||
|
|
@ -16,4 +16,4 @@ Document -
|
||||||
AddTagHelperHtmlAttribute - - type - HtmlAttributeValueStyle.SingleQuotes
|
AddTagHelperHtmlAttribute - - type - HtmlAttributeValueStyle.SingleQuotes
|
||||||
HtmlContent - (69:2,30 [4] TagHelpersWithBoundAttributes.cshtml) - text
|
HtmlContent - (69:2,30 [4] TagHelpersWithBoundAttributes.cshtml) - text
|
||||||
ExecuteTagHelpers -
|
ExecuteTagHelpers -
|
||||||
HtmlContent - (77:2,38 [2] TagHelpersWithBoundAttributes.cshtml) - \n</form>
|
HtmlContent - (77:2,38 [9] TagHelpersWithBoundAttributes.cshtml) - \n</form>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue