parent
ef799223de
commit
3e8b7b607d
|
|
@ -106,11 +106,9 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
|
|
||||||
public CSharpCodeWriter WriteLocationTaggedString(LocationTagged<string> value)
|
public CSharpCodeWriter WriteLocationTaggedString(LocationTagged<string> value)
|
||||||
{
|
{
|
||||||
WriteStartMethodInvocation("Tuple.Create");
|
|
||||||
WriteStringLiteral(value.Value);
|
WriteStringLiteral(value.Value);
|
||||||
WriteParameterSeparator();
|
WriteParameterSeparator();
|
||||||
Write(value.Location.AbsoluteIndex.ToString(CultureInfo.CurrentCulture));
|
Write(value.Location.AbsoluteIndex.ToString(CultureInfo.InvariantCulture));
|
||||||
WriteEndMethodInvocation(false);
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.AspNet.Razor.Chunks;
|
using Microsoft.AspNet.Razor.Chunks;
|
||||||
|
|
@ -26,6 +27,7 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
private readonly CodeGeneratorContext _context;
|
private readonly CodeGeneratorContext _context;
|
||||||
private readonly IChunkVisitor _bodyVisitor;
|
private readonly IChunkVisitor _bodyVisitor;
|
||||||
private readonly IChunkVisitor _literalBodyVisitor;
|
private readonly IChunkVisitor _literalBodyVisitor;
|
||||||
|
private readonly TagHelperAttributeCodeVisitor _attributeCodeVisitor;
|
||||||
private readonly GeneratedTagHelperContext _tagHelperContext;
|
private readonly GeneratedTagHelperContext _tagHelperContext;
|
||||||
private readonly bool _designTimeMode;
|
private readonly bool _designTimeMode;
|
||||||
|
|
||||||
|
|
@ -63,6 +65,7 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
_designTimeMode = context.Host.DesignTimeMode;
|
_designTimeMode = context.Host.DesignTimeMode;
|
||||||
|
|
||||||
_literalBodyVisitor = new CSharpLiteralCodeVisitor(this, writer, context);
|
_literalBodyVisitor = new CSharpLiteralCodeVisitor(this, writer, context);
|
||||||
|
_attributeCodeVisitor = new TagHelperAttributeCodeVisitor(writer, context);
|
||||||
AttributeValueCodeRenderer = new TagHelperAttributeValueCodeRenderer();
|
AttributeValueCodeRenderer = new TagHelperAttributeValueCodeRenderer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -467,15 +470,32 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
// Dynamic attribute value should be run through the conditional attribute removal system. It's
|
// Dynamic attribute value should be run through the conditional attribute removal system. It's
|
||||||
// unbound and contains C#.
|
// unbound and contains C#.
|
||||||
|
|
||||||
|
// TagHelper attribute rendering is buffered by default. We do not want to write to the current
|
||||||
|
// writer.
|
||||||
|
var currentTargetWriter = _context.TargetWriterName;
|
||||||
|
var currentWriteAttributeMethodName = _context.Host.GeneratedClassContext.WriteAttributeValueMethodName;
|
||||||
|
_context.TargetWriterName = null;
|
||||||
|
|
||||||
|
Debug.Assert(attributeValueChunk is ParentChunk);
|
||||||
|
var children = ((ParentChunk)attributeValueChunk).Children;
|
||||||
|
var attributeCount = children.Count(c => c is DynamicCodeAttributeChunk || c is LiteralCodeAttributeChunk);
|
||||||
|
|
||||||
_writer
|
_writer
|
||||||
.WriteStartMethodInvocation(_tagHelperContext.AddHtmlAttributeValuesMethodName)
|
.WriteStartMethodInvocation(_tagHelperContext.BeginAddHtmlAttributeValuesMethodName)
|
||||||
|
.Write(ExecutionContextVariableName)
|
||||||
|
.WriteParameterSeparator()
|
||||||
.WriteStringLiteral(attributeName)
|
.WriteStringLiteral(attributeName)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.Write(ExecutionContextVariableName);
|
.Write(attributeCount.ToString(CultureInfo.InvariantCulture))
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
|
|
||||||
_bodyVisitor.Accept(attributeValueChunk);
|
_attributeCodeVisitor.Accept(attributeValueChunk);
|
||||||
|
|
||||||
_writer.WriteEndMethodInvocation();
|
_writer.WriteMethodInvocation(
|
||||||
|
_tagHelperContext.EndAddHtmlAttributeValuesMethodName,
|
||||||
|
ExecutionContextVariableName);
|
||||||
|
|
||||||
|
_context.TargetWriterName = currentTargetWriter;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -722,5 +742,18 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class TagHelperAttributeCodeVisitor : CSharpCodeVisitor
|
||||||
|
{
|
||||||
|
public TagHelperAttributeCodeVisitor(
|
||||||
|
CSharpCodeWriter writer,
|
||||||
|
CodeGeneratorContext context)
|
||||||
|
: base(writer, context)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string WriteAttributeValueMethodName =>
|
||||||
|
Context.Host.GeneratedClassContext.GeneratedTagHelperContext.AddHtmlAttributeValueMethodName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11,19 +11,25 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
public static readonly string DefaultWriteMethodName = "Write";
|
public static readonly string DefaultWriteMethodName = "Write";
|
||||||
public static readonly string DefaultWriteLiteralMethodName = "WriteLiteral";
|
public static readonly string DefaultWriteLiteralMethodName = "WriteLiteral";
|
||||||
public static readonly string DefaultExecuteMethodName = "ExecuteAsync";
|
public static readonly string DefaultExecuteMethodName = "ExecuteAsync";
|
||||||
public static readonly string DefaultWriteAttributeMethodName = "WriteAttribute";
|
public static readonly string DefaultBeginWriteAttributeMethodName = "BeginWriteAttribute";
|
||||||
public static readonly string DefaultWriteAttributeToMethodName = "WriteAttributeTo";
|
public static readonly string DefaultBeginWriteAttributeToMethodName = "BeginWriteAttributeTo";
|
||||||
|
public static readonly string DefaultEndWriteAttributeMethodName = "EndWriteAttribute";
|
||||||
|
public static readonly string DefaultEndWriteAttributeToMethodName = "EndWriteAttributeTo";
|
||||||
|
public static readonly string DefaultWriteAttributeValueMethodName = "WriteAttributeValue";
|
||||||
|
public static readonly string DefaultWriteAttributeValueToMethodName = "WriteAttributeValueTo";
|
||||||
|
|
||||||
public static readonly GeneratedClassContext Default =
|
public static readonly GeneratedClassContext Default =
|
||||||
new GeneratedClassContext(DefaultExecuteMethodName,
|
new GeneratedClassContext(
|
||||||
DefaultWriteMethodName,
|
DefaultExecuteMethodName,
|
||||||
DefaultWriteLiteralMethodName,
|
DefaultWriteMethodName,
|
||||||
new GeneratedTagHelperContext());
|
DefaultWriteLiteralMethodName,
|
||||||
|
new GeneratedTagHelperContext());
|
||||||
|
|
||||||
public GeneratedClassContext(string executeMethodName,
|
public GeneratedClassContext(
|
||||||
string writeMethodName,
|
string executeMethodName,
|
||||||
string writeLiteralMethodName,
|
string writeMethodName,
|
||||||
GeneratedTagHelperContext generatedTagHelperContext)
|
string writeLiteralMethodName,
|
||||||
|
GeneratedTagHelperContext generatedTagHelperContext)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
if (generatedTagHelperContext == null)
|
if (generatedTagHelperContext == null)
|
||||||
|
|
@ -61,17 +67,22 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
TemplateTypeName = null;
|
TemplateTypeName = null;
|
||||||
DefineSectionMethodName = null;
|
DefineSectionMethodName = null;
|
||||||
|
|
||||||
WriteAttributeMethodName = DefaultWriteAttributeMethodName;
|
BeginWriteAttributeMethodName = DefaultBeginWriteAttributeMethodName;
|
||||||
WriteAttributeToMethodName = DefaultWriteAttributeToMethodName;
|
BeginWriteAttributeToMethodName = DefaultBeginWriteAttributeToMethodName;
|
||||||
|
EndWriteAttributeMethodName = DefaultEndWriteAttributeMethodName;
|
||||||
|
EndWriteAttributeToMethodName = DefaultEndWriteAttributeToMethodName;
|
||||||
|
WriteAttributeValueMethodName = DefaultWriteAttributeValueMethodName;
|
||||||
|
WriteAttributeValueToMethodName = DefaultWriteAttributeValueToMethodName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GeneratedClassContext(string executeMethodName,
|
public GeneratedClassContext(
|
||||||
string writeMethodName,
|
string executeMethodName,
|
||||||
string writeLiteralMethodName,
|
string writeMethodName,
|
||||||
string writeToMethodName,
|
string writeLiteralMethodName,
|
||||||
string writeLiteralToMethodName,
|
string writeToMethodName,
|
||||||
string templateTypeName,
|
string writeLiteralToMethodName,
|
||||||
GeneratedTagHelperContext generatedTagHelperContext)
|
string templateTypeName,
|
||||||
|
GeneratedTagHelperContext generatedTagHelperContext)
|
||||||
: this(executeMethodName,
|
: this(executeMethodName,
|
||||||
writeMethodName,
|
writeMethodName,
|
||||||
writeLiteralMethodName,
|
writeLiteralMethodName,
|
||||||
|
|
@ -82,14 +93,15 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
TemplateTypeName = templateTypeName;
|
TemplateTypeName = templateTypeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GeneratedClassContext(string executeMethodName,
|
public GeneratedClassContext(
|
||||||
string writeMethodName,
|
string executeMethodName,
|
||||||
string writeLiteralMethodName,
|
string writeMethodName,
|
||||||
string writeToMethodName,
|
string writeLiteralMethodName,
|
||||||
string writeLiteralToMethodName,
|
string writeToMethodName,
|
||||||
string templateTypeName,
|
string writeLiteralToMethodName,
|
||||||
string defineSectionMethodName,
|
string templateTypeName,
|
||||||
GeneratedTagHelperContext generatedTagHelperContext)
|
string defineSectionMethodName,
|
||||||
|
GeneratedTagHelperContext generatedTagHelperContext)
|
||||||
: this(executeMethodName,
|
: this(executeMethodName,
|
||||||
writeMethodName,
|
writeMethodName,
|
||||||
writeLiteralMethodName,
|
writeLiteralMethodName,
|
||||||
|
|
@ -101,16 +113,17 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
DefineSectionMethodName = defineSectionMethodName;
|
DefineSectionMethodName = defineSectionMethodName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GeneratedClassContext(string executeMethodName,
|
public GeneratedClassContext(
|
||||||
string writeMethodName,
|
string executeMethodName,
|
||||||
string writeLiteralMethodName,
|
string writeMethodName,
|
||||||
string writeToMethodName,
|
string writeLiteralMethodName,
|
||||||
string writeLiteralToMethodName,
|
string writeToMethodName,
|
||||||
string templateTypeName,
|
string writeLiteralToMethodName,
|
||||||
string defineSectionMethodName,
|
string templateTypeName,
|
||||||
string beginContextMethodName,
|
string defineSectionMethodName,
|
||||||
string endContextMethodName,
|
string beginContextMethodName,
|
||||||
GeneratedTagHelperContext generatedTagHelperContext)
|
string endContextMethodName,
|
||||||
|
GeneratedTagHelperContext generatedTagHelperContext)
|
||||||
: this(executeMethodName,
|
: this(executeMethodName,
|
||||||
writeMethodName,
|
writeMethodName,
|
||||||
writeLiteralMethodName,
|
writeLiteralMethodName,
|
||||||
|
|
@ -137,8 +150,13 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
public string EndContextMethodName { get; set; }
|
public string EndContextMethodName { get; set; }
|
||||||
public string DefineSectionMethodName { get; set; }
|
public string DefineSectionMethodName { get; set; }
|
||||||
public string TemplateTypeName { get; set; }
|
public string TemplateTypeName { get; set; }
|
||||||
public string WriteAttributeMethodName { get; set; }
|
|
||||||
public string WriteAttributeToMethodName { get; set; }
|
public string BeginWriteAttributeMethodName { get; set; }
|
||||||
|
public string BeginWriteAttributeToMethodName { get; set; }
|
||||||
|
public string EndWriteAttributeMethodName { get; set; }
|
||||||
|
public string EndWriteAttributeToMethodName { get; set; }
|
||||||
|
public string WriteAttributeValueMethodName { get; set; }
|
||||||
|
public string WriteAttributeValueToMethodName { get; set; }
|
||||||
|
|
||||||
public bool AllowSections
|
public bool AllowSections
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GeneratedTagHelperContext()
|
public GeneratedTagHelperContext()
|
||||||
{
|
{
|
||||||
AddHtmlAttributeValuesMethodName = "AddHtmlAttributeValues";
|
BeginAddHtmlAttributeValuesMethodName = "BeginAddHtmlAttributeValues";
|
||||||
|
EndAddHtmlAttributeValuesMethodName = "EndAddHtmlAttributeValues";
|
||||||
|
AddHtmlAttributeValueMethodName = "AddHtmlAttributeValue";
|
||||||
CreateTagHelperMethodName = "CreateTagHelper";
|
CreateTagHelperMethodName = "CreateTagHelper";
|
||||||
RunnerRunAsyncMethodName = "RunAsync";
|
RunnerRunAsyncMethodName = "RunAsync";
|
||||||
ScopeManagerBeginMethodName = "Begin";
|
ScopeManagerBeginMethodName = "Begin";
|
||||||
|
|
@ -38,18 +40,48 @@ namespace Microsoft.AspNet.Razor.CodeGenerators
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of the method used to add unbound, complex tag helper attributes to TagHelperExecutionContexts.
|
/// The name of the method used to begin the addition of unbound, complex tag helper attributes to
|
||||||
|
/// TagHelperExecutionContexts.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Method signature should be
|
/// Method signature should be
|
||||||
/// <code>
|
/// <code>
|
||||||
/// public void AddHtmlAttributeValues(
|
/// public void BeginAddHtmlAttributeValues(
|
||||||
/// string attributeName,
|
|
||||||
/// TagHelperExecutionContext executionContext,
|
/// TagHelperExecutionContext executionContext,
|
||||||
/// params Microsoft.AspNet.Mvc.Razor.AttributeValue[] values)
|
/// string attributeName)
|
||||||
/// </code>
|
/// </code>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public string AddHtmlAttributeValuesMethodName { get; set; }
|
public string BeginAddHtmlAttributeValuesMethodName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Method name used to end addition of unbound, complex tag helper attributes to TagHelperExecutionContexts.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Method signature should be
|
||||||
|
/// <code>
|
||||||
|
/// public void EndAddHtmlAttributeValues(
|
||||||
|
/// TagHelperExecutionContext executionContext)
|
||||||
|
/// </code>
|
||||||
|
/// </remarks>
|
||||||
|
public string EndAddHtmlAttributeValuesMethodName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Method name used to add individual components of an unbound, complex tag helper attribute to
|
||||||
|
/// TagHelperExecutionContexts.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Method signature:
|
||||||
|
/// <code>
|
||||||
|
/// public void AddHtmlAttributeValues(
|
||||||
|
/// string prefix,
|
||||||
|
/// int prefixOffset,
|
||||||
|
/// string value,
|
||||||
|
/// int valueOffset,
|
||||||
|
/// int valueLength,
|
||||||
|
/// bool isLiteral)
|
||||||
|
/// </code>
|
||||||
|
/// </remarks>
|
||||||
|
public string AddHtmlAttributeValueMethodName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The name of the method used to create a tag helper.
|
/// The name of the method used to create a tag helper.
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,13 @@ namespace Microsoft.AspNet.Razor.CodeGenerators.Visitors
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the method name used to generate <c>WriteAttribute</c> invocations in the rendered page.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>Defaults to <see cref="GeneratedClassContext.WriteAttributeValueMethodName"/></remarks>
|
||||||
|
protected virtual string WriteAttributeValueMethodName =>
|
||||||
|
Context.Host.GeneratedClassContext.WriteAttributeValueMethodName;
|
||||||
|
|
||||||
protected override void Visit(TagHelperChunk chunk)
|
protected override void Visit(TagHelperChunk chunk)
|
||||||
{
|
{
|
||||||
TagHelperRenderer.RenderTagHelper(chunk);
|
TagHelperRenderer.RenderTagHelper(chunk);
|
||||||
|
|
@ -174,50 +181,60 @@ namespace Microsoft.AspNet.Razor.CodeGenerators.Visitors
|
||||||
var currentRenderingMode = Context.ExpressionRenderingMode;
|
var currentRenderingMode = Context.ExpressionRenderingMode;
|
||||||
var currentTargetWriterName = Context.TargetWriterName;
|
var currentTargetWriterName = Context.TargetWriterName;
|
||||||
|
|
||||||
Context.TargetWriterName = ValueWriterName;
|
if (!string.IsNullOrEmpty(currentTargetWriterName))
|
||||||
|
{
|
||||||
|
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteAttributeValueToMethodName)
|
||||||
|
.Write(currentTargetWriterName)
|
||||||
|
.WriteParameterSeparator();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Writer.WriteStartMethodInvocation(WriteAttributeValueMethodName);
|
||||||
|
}
|
||||||
|
|
||||||
Writer.WriteParameterSeparator()
|
Context.TargetWriterName = ValueWriterName;
|
||||||
.WriteLine();
|
|
||||||
|
|
||||||
var code = chunk.Children.FirstOrDefault();
|
var code = chunk.Children.FirstOrDefault();
|
||||||
if (code is ExpressionChunk || code is ExpressionBlockChunk)
|
if (code is ExpressionChunk || code is ExpressionBlockChunk)
|
||||||
{
|
{
|
||||||
Writer.WriteStartMethodInvocation("Tuple.Create")
|
Writer
|
||||||
.WriteLocationTaggedString(chunk.Prefix)
|
.WriteLocationTaggedString(chunk.Prefix)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator();
|
||||||
.WriteStartMethodInvocation("Tuple.Create", new string[] { "System.Object", "System.Int32" });
|
|
||||||
|
|
||||||
Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode;
|
Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode;
|
||||||
|
|
||||||
Accept(code);
|
Accept(code);
|
||||||
|
|
||||||
Writer.WriteParameterSeparator()
|
Writer
|
||||||
.Write(chunk.Start.AbsoluteIndex.ToString(CultureInfo.CurrentCulture))
|
.WriteParameterSeparator()
|
||||||
.WriteEndMethodInvocation(endLine: false)
|
.Write(chunk.Start.AbsoluteIndex.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteBooleanLiteral(value: false)
|
.Write(chunk.Association.Length.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteEndMethodInvocation(endLine: false);
|
.WriteParameterSeparator()
|
||||||
|
.WriteBooleanLiteral(value: false)
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Writer.WriteStartMethodInvocation("Tuple.Create")
|
Writer
|
||||||
.WriteLocationTaggedString(chunk.Prefix)
|
.WriteLocationTaggedString(chunk.Prefix)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteStartMethodInvocation("Tuple.Create", new string[] { "System.Object", "System.Int32" })
|
.WriteStartNewObject(Context.Host.GeneratedClassContext.TemplateTypeName);
|
||||||
.WriteStartNewObject(Context.Host.GeneratedClassContext.TemplateTypeName);
|
|
||||||
|
|
||||||
using (Writer.BuildLambda(endLine: false, parameterNames: ValueWriterName))
|
using (Writer.BuildLambda(endLine: false, parameterNames: ValueWriterName))
|
||||||
{
|
{
|
||||||
Accept(chunk.Children);
|
Accept(chunk.Children);
|
||||||
}
|
}
|
||||||
|
|
||||||
Writer.WriteEndMethodInvocation(false)
|
Writer
|
||||||
.WriteParameterSeparator()
|
.WriteEndMethodInvocation(false)
|
||||||
.Write(chunk.Start.AbsoluteIndex.ToString(CultureInfo.CurrentCulture))
|
.WriteParameterSeparator()
|
||||||
.WriteEndMethodInvocation(endLine: false)
|
.Write(chunk.Start.AbsoluteIndex.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteBooleanLiteral(false)
|
.Write(chunk.Association.Length.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteEndMethodInvocation(false);
|
.WriteParameterSeparator()
|
||||||
|
.WriteBooleanLiteral(false)
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.TargetWriterName = currentTargetWriterName;
|
Context.TargetWriterName = currentTargetWriterName;
|
||||||
|
|
@ -239,15 +256,23 @@ namespace Microsoft.AspNet.Razor.CodeGenerators.Visitors
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Writer.WriteParameterSeparator()
|
if (!string.IsNullOrEmpty(Context.TargetWriterName))
|
||||||
.WriteStartMethodInvocation("Tuple.Create")
|
{
|
||||||
.WriteLocationTaggedString(chunk.Prefix)
|
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteAttributeValueToMethodName)
|
||||||
.WriteParameterSeparator();
|
.Write(Context.TargetWriterName)
|
||||||
|
.WriteParameterSeparator();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Writer.WriteStartMethodInvocation(WriteAttributeValueMethodName);
|
||||||
|
}
|
||||||
|
|
||||||
|
Writer
|
||||||
|
.WriteLocationTaggedString(chunk.Prefix)
|
||||||
|
.WriteParameterSeparator();
|
||||||
|
|
||||||
if (visitChildren)
|
if (visitChildren)
|
||||||
{
|
{
|
||||||
Writer.WriteStartMethodInvocation("Tuple.Create", new string[] { "System.Object", "System.Int32" });
|
|
||||||
|
|
||||||
var currentRenderingMode = Context.ExpressionRenderingMode;
|
var currentRenderingMode = Context.ExpressionRenderingMode;
|
||||||
Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode;
|
Context.ExpressionRenderingMode = ExpressionRenderingMode.InjectCode;
|
||||||
|
|
||||||
|
|
@ -255,19 +280,24 @@ namespace Microsoft.AspNet.Razor.CodeGenerators.Visitors
|
||||||
|
|
||||||
Context.ExpressionRenderingMode = currentRenderingMode;
|
Context.ExpressionRenderingMode = currentRenderingMode;
|
||||||
|
|
||||||
Writer.WriteParameterSeparator()
|
Writer
|
||||||
.Write(chunk.ValueLocation.AbsoluteIndex.ToString(CultureInfo.CurrentCulture))
|
.WriteParameterSeparator()
|
||||||
.WriteEndMethodInvocation(false)
|
.Write(chunk.ValueLocation.AbsoluteIndex.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteBooleanLiteral(false)
|
.Write(chunk.Association.Length.ToString(CultureInfo.InvariantCulture))
|
||||||
.WriteEndMethodInvocation(false);
|
.WriteParameterSeparator()
|
||||||
|
.WriteBooleanLiteral(false)
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Writer.WriteLocationTaggedString(chunk.Value)
|
Writer
|
||||||
.WriteParameterSeparator()
|
.WriteLocationTaggedString(chunk.Value)
|
||||||
.WriteBooleanLiteral(true)
|
.WriteParameterSeparator()
|
||||||
.WriteEndMethodInvocation(false);
|
.Write(chunk.Association.Length.ToString(CultureInfo.InvariantCulture))
|
||||||
|
.WriteParameterSeparator()
|
||||||
|
.WriteBooleanLiteral(true)
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -283,24 +313,29 @@ namespace Microsoft.AspNet.Razor.CodeGenerators.Visitors
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Context.TargetWriterName))
|
if (!string.IsNullOrEmpty(Context.TargetWriterName))
|
||||||
{
|
{
|
||||||
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteAttributeToMethodName)
|
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.BeginWriteAttributeToMethodName)
|
||||||
.Write(Context.TargetWriterName)
|
.Write(Context.TargetWriterName)
|
||||||
.WriteParameterSeparator();
|
.WriteParameterSeparator();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.WriteAttributeMethodName);
|
Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.BeginWriteAttributeMethodName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var attributeCount = chunk.Children.Count(c => c is LiteralCodeAttributeChunk || c is DynamicCodeAttributeChunk);
|
||||||
|
|
||||||
Writer.WriteStringLiteral(chunk.Attribute)
|
Writer.WriteStringLiteral(chunk.Attribute)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteLocationTaggedString(chunk.Prefix)
|
.WriteLocationTaggedString(chunk.Prefix)
|
||||||
.WriteParameterSeparator()
|
.WriteParameterSeparator()
|
||||||
.WriteLocationTaggedString(chunk.Suffix);
|
.WriteLocationTaggedString(chunk.Suffix)
|
||||||
|
.WriteParameterSeparator()
|
||||||
|
.Write(attributeCount.ToString(CultureInfo.InvariantCulture))
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
|
|
||||||
Accept(chunk.Children);
|
Accept(chunk.Children);
|
||||||
|
|
||||||
Writer.WriteEndMethodInvocation();
|
Writer.WriteMethodInvocation(Context.Host.GeneratedClassContext.EndWriteAttributeMethodName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Visit(SectionChunk chunk)
|
protected override void Visit(SectionChunk chunk)
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,11 @@ if(true) {
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__PTagHelper = CreateTagHelper<PTagHelper>();
|
__PTagHelper = CreateTagHelper<PTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__PTagHelper);
|
__tagHelperExecutionContext.Add(__PTagHelper);
|
||||||
AddHtmlAttributeValues("time", __tagHelperExecutionContext, Tuple.Create(Tuple.Create("", 148), Tuple.Create("Current", 148), true), Tuple.Create(Tuple.Create(" ", 155), Tuple.Create("Time:", 156), true),
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "time", 3);
|
||||||
Tuple.Create(Tuple.Create(" ", 161), Tuple.Create<System.Object, System.Int32>(DateTime.Now, 162), false));
|
AddHtmlAttributeValue("", 148, "Current", 148, 7, true);
|
||||||
|
AddHtmlAttributeValue(" ", 155, "Time:", 156, 6, true);
|
||||||
|
AddHtmlAttributeValue(" ", 161, DateTime.Now, 162, 14, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(139, 529, false);
|
Instrumentation.BeginContext(139, 529, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
|
||||||
|
|
@ -25,33 +25,41 @@ namespace TestOutput
|
||||||
Instrumentation.BeginContext(46, 28, true);
|
Instrumentation.BeginContext(46, 28, true);
|
||||||
WriteLiteral(" <a href=\"Foo\" />\r\n <p");
|
WriteLiteral(" <a href=\"Foo\" />\r\n <p");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 74), Tuple.Create("\"", 86),
|
BeginWriteAttribute("class", " class=\"", 74, "\"", 86, 1);
|
||||||
Tuple.Create(Tuple.Create("", 82), Tuple.Create<System.Object, System.Int32>(cls, 82), false));
|
WriteAttributeValue("", 82, cls, 82, 4, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(87, 11, true);
|
Instrumentation.BeginContext(87, 11, true);
|
||||||
WriteLiteral(" />\r\n <p");
|
WriteLiteral(" />\r\n <p");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 98), Tuple.Create("\"", 114), Tuple.Create(Tuple.Create("", 106), Tuple.Create("foo", 106), true),
|
BeginWriteAttribute("class", " class=\"", 98, "\"", 114, 2);
|
||||||
Tuple.Create(Tuple.Create(" ", 109), Tuple.Create<System.Object, System.Int32>(cls, 110), false));
|
WriteAttributeValue("", 106, "foo", 106, 3, true);
|
||||||
|
WriteAttributeValue(" ", 109, cls, 110, 5, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(115, 11, true);
|
Instrumentation.BeginContext(115, 11, true);
|
||||||
WriteLiteral(" />\r\n <p");
|
WriteLiteral(" />\r\n <p");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 126), Tuple.Create("\"", 142),
|
BeginWriteAttribute("class", " class=\"", 126, "\"", 142, 2);
|
||||||
Tuple.Create(Tuple.Create("", 134), Tuple.Create<System.Object, System.Int32>(cls, 134), false), Tuple.Create(Tuple.Create(" ", 138), Tuple.Create("foo", 139), true));
|
WriteAttributeValue("", 134, cls, 134, 4, false);
|
||||||
|
WriteAttributeValue(" ", 138, "foo", 139, 4, true);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(143, 31, true);
|
Instrumentation.BeginContext(143, 31, true);
|
||||||
WriteLiteral(" />\r\n <input type=\"checkbox\"");
|
WriteLiteral(" />\r\n <input type=\"checkbox\"");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("checked", Tuple.Create(" checked=\"", 174), Tuple.Create("\"", 187),
|
BeginWriteAttribute("checked", " checked=\"", 174, "\"", 187, 1);
|
||||||
Tuple.Create(Tuple.Create("", 184), Tuple.Create<System.Object, System.Int32>(ch, 184), false));
|
WriteAttributeValue("", 184, ch, 184, 3, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(188, 31, true);
|
Instrumentation.BeginContext(188, 31, true);
|
||||||
WriteLiteral(" />\r\n <input type=\"checkbox\"");
|
WriteLiteral(" />\r\n <input type=\"checkbox\"");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("checked", Tuple.Create(" checked=\"", 219), Tuple.Create("\"", 236), Tuple.Create(Tuple.Create("", 229), Tuple.Create("foo", 229), true),
|
BeginWriteAttribute("checked", " checked=\"", 219, "\"", 236, 2);
|
||||||
Tuple.Create(Tuple.Create(" ", 232), Tuple.Create<System.Object, System.Int32>(ch, 233), false));
|
WriteAttributeValue("", 229, "foo", 229, 3, true);
|
||||||
|
WriteAttributeValue(" ", 232, ch, 233, 4, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(237, 11, true);
|
Instrumentation.BeginContext(237, 11, true);
|
||||||
WriteLiteral(" />\r\n <p");
|
WriteLiteral(" />\r\n <p");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 248), Tuple.Create("\"", 281),
|
BeginWriteAttribute("class", " class=\"", 248, "\"", 281, 1);
|
||||||
Tuple.Create(Tuple.Create("", 256), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
WriteAttributeValue("", 256, new Template((__razor_attribute_value_writer) => {
|
||||||
#line 10 "ConditionalAttributes.cshtml"
|
#line 10 "ConditionalAttributes.cshtml"
|
||||||
if(cls != null) {
|
if(cls != null) {
|
||||||
|
|
||||||
|
|
@ -72,17 +80,20 @@ WriteTo(__razor_attribute_value_writer, cls);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
}
|
}
|
||||||
), 256), false));
|
), 256, 25, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(282, 40, true);
|
Instrumentation.BeginContext(282, 40, true);
|
||||||
WriteLiteral(" />\r\n <a href=\"~/Foo\" />\r\n <script");
|
WriteLiteral(" />\r\n <a href=\"~/Foo\" />\r\n <script");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("src", Tuple.Create(" src=\"", 322), Tuple.Create("\"", 373),
|
BeginWriteAttribute("src", " src=\"", 322, "\"", 373, 1);
|
||||||
Tuple.Create(Tuple.Create("", 328), Tuple.Create<System.Object, System.Int32>(Url.Content("~/Scripts/jquery-1.6.2.min.js"), 328), false));
|
WriteAttributeValue("", 328, Url.Content("~/Scripts/jquery-1.6.2.min.js"), 328, 45, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(374, 46, true);
|
Instrumentation.BeginContext(374, 46, true);
|
||||||
WriteLiteral(" type=\"text/javascript\"></script>\r\n <script");
|
WriteLiteral(" type=\"text/javascript\"></script>\r\n <script");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("src", Tuple.Create(" src=\"", 420), Tuple.Create("\"", 487),
|
BeginWriteAttribute("src", " src=\"", 420, "\"", 487, 1);
|
||||||
Tuple.Create(Tuple.Create("", 426), Tuple.Create<System.Object, System.Int32>(Url.Content("~/Scripts/modernizr-2.0.6-development-only.js"), 426), false));
|
WriteAttributeValue("", 426, Url.Content("~/Scripts/modernizr-2.0.6-development-only.js"), 426, 61, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(488, 152, true);
|
Instrumentation.BeginContext(488, 152, true);
|
||||||
WriteLiteral(" type=\"text/javascript\"></script>\r\n <script src=\"http://ajax.aspnetcdn.com/aja" +
|
WriteLiteral(" type=\"text/javascript\"></script>\r\n <script src=\"http://ajax.aspnetcdn.com/aja" +
|
||||||
"x/jquery.ui/1.8.16/jquery-ui.min.js\" type=\"text/javascript\"></script>\r\n");
|
"x/jquery.ui/1.8.16/jquery-ui.min.js\" type=\"text/javascript\"></script>\r\n");
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,10 @@ namespace TestOutput
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__InputTagHelper);
|
__tagHelperExecutionContext.Add(__InputTagHelper);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext, Tuple.Create(Tuple.Create("", 51), Tuple.Create("prefix", 51), true),
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2);
|
||||||
Tuple.Create(Tuple.Create(" ", 57), Tuple.Create<System.Object, System.Int32>(DateTime.Now, 58), false));
|
AddHtmlAttributeValue("", 51, "prefix", 51, 6, true);
|
||||||
|
AddHtmlAttributeValue(" ", 57, DateTime.Now, 58, 14, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(35, 40, false);
|
Instrumentation.BeginContext(35, 40, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
@ -47,8 +49,8 @@ namespace TestOutput
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__InputTagHelper);
|
__tagHelperExecutionContext.Add(__InputTagHelper);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 2);
|
||||||
Tuple.Create(Tuple.Create("", 95), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 95, new Template((__razor_attribute_value_writer) => {
|
||||||
#line 5 "DynamicAttributeTagHelpers.cshtml"
|
#line 5 "DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
|
|
@ -82,7 +84,9 @@ WriteTo(__razor_attribute_value_writer, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
}
|
}
|
||||||
), 95), false), Tuple.Create(Tuple.Create(" ", 139), Tuple.Create("suffix", 140), true));
|
), 95, 44, false);
|
||||||
|
AddHtmlAttributeValue(" ", 139, "suffix", 140, 7, true);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(79, 71, false);
|
Instrumentation.BeginContext(79, 71, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
@ -107,8 +111,11 @@ WriteLiteral(DateTime.Now);
|
||||||
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
||||||
__InputTagHelper.Bound = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
__InputTagHelper.Bound = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
||||||
__tagHelperExecutionContext.AddTagHelperAttribute("bound", __InputTagHelper.Bound);
|
__tagHelperExecutionContext.AddTagHelperAttribute("bound", __InputTagHelper.Bound);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext, Tuple.Create(Tuple.Create("", 206), Tuple.Create("prefix", 206), true),
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 3);
|
||||||
Tuple.Create(Tuple.Create(" ", 212), Tuple.Create<System.Object, System.Int32>(DateTime.Now, 213), false), Tuple.Create(Tuple.Create(" ", 226), Tuple.Create("suffix", 227), true));
|
AddHtmlAttributeValue("", 206, "prefix", 206, 6, true);
|
||||||
|
AddHtmlAttributeValue(" ", 212, DateTime.Now, 213, 14, false);
|
||||||
|
AddHtmlAttributeValue(" ", 226, "suffix", 227, 7, true);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(154, 83, false);
|
Instrumentation.BeginContext(154, 83, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
@ -166,9 +173,9 @@ WriteLiteral(int.MaxValue);
|
||||||
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
||||||
__InputTagHelper.Bound = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
__InputTagHelper.Bound = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
||||||
__tagHelperExecutionContext.AddTagHelperAttribute("bound", __InputTagHelper.Bound);
|
__tagHelperExecutionContext.AddTagHelperAttribute("bound", __InputTagHelper.Bound);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 3);
|
||||||
Tuple.Create(Tuple.Create("", 347), Tuple.Create<System.Object, System.Int32>(long.MinValue, 347), false),
|
AddHtmlAttributeValue("", 347, long.MinValue, 347, 14, false);
|
||||||
Tuple.Create(Tuple.Create(" ", 361), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue(" ", 361, new Template((__razor_attribute_value_writer) => {
|
||||||
#line 10 "DynamicAttributeTagHelpers.cshtml"
|
#line 10 "DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
|
|
@ -202,8 +209,9 @@ WriteTo(__razor_attribute_value_writer, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
}
|
}
|
||||||
), 362), false),
|
), 362, 45, false);
|
||||||
Tuple.Create(Tuple.Create(" ", 406), Tuple.Create<System.Object, System.Int32>(int.MaxValue, 407), false));
|
AddHtmlAttributeValue(" ", 406, int.MaxValue, 407, 14, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(241, 183, false);
|
Instrumentation.BeginContext(241, 183, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
@ -217,10 +225,13 @@ WriteTo(__razor_attribute_value_writer, false);
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__InputTagHelper);
|
__tagHelperExecutionContext.Add(__InputTagHelper);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 5);
|
||||||
Tuple.Create(Tuple.Create("", 444), Tuple.Create<System.Object, System.Int32>(long.MinValue, 444), false),
|
AddHtmlAttributeValue("", 444, long.MinValue, 444, 14, false);
|
||||||
Tuple.Create(Tuple.Create(" ", 458), Tuple.Create<System.Object, System.Int32>(DateTime.Now, 459), false), Tuple.Create(Tuple.Create(" ", 472), Tuple.Create("static", 473), true), Tuple.Create(Tuple.Create(" ", 479), Tuple.Create("content", 483), true),
|
AddHtmlAttributeValue(" ", 458, DateTime.Now, 459, 14, false);
|
||||||
Tuple.Create(Tuple.Create(" ", 490), Tuple.Create<System.Object, System.Int32>(int.MaxValue, 491), false));
|
AddHtmlAttributeValue(" ", 472, "static", 473, 7, true);
|
||||||
|
AddHtmlAttributeValue(" ", 479, "content", 483, 11, true);
|
||||||
|
AddHtmlAttributeValue(" ", 490, int.MaxValue, 491, 14, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(428, 80, false);
|
Instrumentation.BeginContext(428, 80, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
@ -234,8 +245,8 @@ WriteTo(__razor_attribute_value_writer, false);
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
__InputTagHelper = CreateTagHelper<InputTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__InputTagHelper);
|
__tagHelperExecutionContext.Add(__InputTagHelper);
|
||||||
AddHtmlAttributeValues("unbound", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unbound", 1);
|
||||||
Tuple.Create(Tuple.Create("", 528), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 528, new Template((__razor_attribute_value_writer) => {
|
||||||
#line 14 "DynamicAttributeTagHelpers.cshtml"
|
#line 14 "DynamicAttributeTagHelpers.cshtml"
|
||||||
if (true) {
|
if (true) {
|
||||||
|
|
||||||
|
|
@ -269,7 +280,8 @@ WriteTo(__razor_attribute_value_writer, false);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
}
|
}
|
||||||
), 528), false));
|
), 528, 44, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(512, 64, false);
|
Instrumentation.BeginContext(512, 64, false);
|
||||||
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
await WriteTagHelperAsync(__tagHelperExecutionContext);
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ namespace TestOutput
|
||||||
Instrumentation.BeginContext(13, 23, true);
|
Instrumentation.BeginContext(13, 23, true);
|
||||||
WriteLiteral("(string link) {\r\n <a");
|
WriteLiteral("(string link) {\r\n <a");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
WriteAttribute("href", Tuple.Create(" href=\"", 36), Tuple.Create("\"", 94),
|
BeginWriteAttribute("href", " href=\"", 36, "\"", 94, 1);
|
||||||
Tuple.Create(Tuple.Create("", 43), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
WriteAttributeValue("", 43, new Template((__razor_attribute_value_writer) => {
|
||||||
#line 2 "InlineBlocks.cshtml"
|
#line 2 "InlineBlocks.cshtml"
|
||||||
if(link != null) {
|
if(link != null) {
|
||||||
|
|
||||||
|
|
@ -57,7 +57,8 @@ WriteTo(__razor_attribute_value_writer, link);
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
}
|
}
|
||||||
), 43), false));
|
), 43, 50, false);
|
||||||
|
EndWriteAttribute();
|
||||||
Instrumentation.BeginContext(95, 6, true);
|
Instrumentation.BeginContext(95, 6, true);
|
||||||
WriteLiteral(" />\r\n}");
|
WriteLiteral(" />\r\n}");
|
||||||
Instrumentation.EndContext();
|
Instrumentation.EndContext();
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,11 @@ WriteLiteral(DateTime.Now);
|
||||||
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
__tagHelperStringValueBuffer = EndTagHelperWritingScope();
|
||||||
__MyTagHelper.BoundProperty = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
__MyTagHelper.BoundProperty = __tagHelperStringValueBuffer.GetContent(HtmlEncoder);
|
||||||
__tagHelperExecutionContext.AddTagHelperAttribute("boundproperty", __MyTagHelper.BoundProperty);
|
__tagHelperExecutionContext.AddTagHelperAttribute("boundproperty", __MyTagHelper.BoundProperty);
|
||||||
AddHtmlAttributeValues("unboundproperty", __tagHelperExecutionContext, Tuple.Create(Tuple.Create("", 188), Tuple.Create("Current", 188), true), Tuple.Create(Tuple.Create(" ", 195), Tuple.Create("Time:", 196), true),
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "unboundproperty", 3);
|
||||||
Tuple.Create(Tuple.Create(" ", 201), Tuple.Create<System.Object, System.Int32>(DateTime.Now, 202), false));
|
AddHtmlAttributeValue("", 188, "Current", 188, 7, true);
|
||||||
|
AddHtmlAttributeValue(" ", 195, "Time:", 196, 6, true);
|
||||||
|
AddHtmlAttributeValue(" ", 201, DateTime.Now, 202, 14, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
__tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
|
||||||
Instrumentation.BeginContext(114, 245, false);
|
Instrumentation.BeginContext(114, 245, false);
|
||||||
await WriteTagHelperToAsync(__razor_template_writer, __tagHelperExecutionContext);
|
await WriteTagHelperToAsync(__razor_template_writer, __tagHelperExecutionContext);
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,11 @@ namespace TestOutput
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__PTagHelper = CreateTagHelper<PTagHelper>();
|
__PTagHelper = CreateTagHelper<PTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__PTagHelper);
|
__tagHelperExecutionContext.Add(__PTagHelper);
|
||||||
AddHtmlAttributeValues("class", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "class", 1);
|
||||||
Tuple.Create(Tuple.Create("", 109), Tuple.Create<System.Object, System.Int32>(new Template((__razor_attribute_value_writer) => {
|
AddHtmlAttributeValue("", 109, new Template((__razor_attribute_value_writer) => {
|
||||||
}
|
}
|
||||||
), 109), false));
|
), 109, 6, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
#line 7 "TransitionsInTagHelperAttributes.cshtml"
|
#line 7 "TransitionsInTagHelperAttributes.cshtml"
|
||||||
__PTagHelper.Age = 1337;
|
__PTagHelper.Age = 1337;
|
||||||
|
|
||||||
|
|
@ -66,8 +67,9 @@ namespace TestOutput
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__PTagHelper = CreateTagHelper<PTagHelper>();
|
__PTagHelper = CreateTagHelper<PTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__PTagHelper);
|
__tagHelperExecutionContext.Add(__PTagHelper);
|
||||||
AddHtmlAttributeValues("class", __tagHelperExecutionContext,
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "class", 1);
|
||||||
Tuple.Create(Tuple.Create("", 155), Tuple.Create<System.Object, System.Int32>(@class, 155), false));
|
AddHtmlAttributeValue("", 155, @class, 155, 9, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
#line 8 "TransitionsInTagHelperAttributes.cshtml"
|
#line 8 "TransitionsInTagHelperAttributes.cshtml"
|
||||||
__PTagHelper.Age = 42;
|
__PTagHelper.Age = 42;
|
||||||
|
|
||||||
|
|
@ -147,8 +149,10 @@ namespace TestOutput
|
||||||
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
, StartTagHelperWritingScope, EndTagHelperWritingScope);
|
||||||
__PTagHelper = CreateTagHelper<PTagHelper>();
|
__PTagHelper = CreateTagHelper<PTagHelper>();
|
||||||
__tagHelperExecutionContext.Add(__PTagHelper);
|
__tagHelperExecutionContext.Add(__PTagHelper);
|
||||||
AddHtmlAttributeValues("class", __tagHelperExecutionContext, Tuple.Create(Tuple.Create("", 298), Tuple.Create("custom-", 298), true),
|
BeginAddHtmlAttributeValues(__tagHelperExecutionContext, "class", 2);
|
||||||
Tuple.Create(Tuple.Create("", 305), Tuple.Create<System.Object, System.Int32>(@class, 305), false));
|
AddHtmlAttributeValue("", 298, "custom-", 298, 7, true);
|
||||||
|
AddHtmlAttributeValue("", 305, @class, 305, 9, false);
|
||||||
|
EndAddHtmlAttributeValues(__tagHelperExecutionContext);
|
||||||
#line 12 "TransitionsInTagHelperAttributes.cshtml"
|
#line 12 "TransitionsInTagHelperAttributes.cshtml"
|
||||||
__PTagHelper.Age = 4 * @(@int + 2);
|
__PTagHelper.Age = 4 * @(@int + 2);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue