In RazorCompiler, support string-valued attributes
This commit is contained in:
parent
1c1fd69bf2
commit
80b371c647
|
|
@ -148,6 +148,16 @@ namespace Microsoft.Blazor.Build.Core.RazorCompilation.Engine
|
||||||
.WriteEndMethodInvocation();
|
.WriteEndMethodInvocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var attribute in nextTag.Attributes)
|
||||||
|
{
|
||||||
|
context.CodeWriter
|
||||||
|
.WriteStartMethodInvocation($"{builderVarName}.{nameof(RenderTreeBuilder.AddAttribute)}")
|
||||||
|
.WriteStringLiteral(attribute.Key)
|
||||||
|
.WriteParameterSeparator()
|
||||||
|
.WriteStringLiteral(attribute.Value)
|
||||||
|
.WriteEndMethodInvocation();
|
||||||
|
}
|
||||||
|
|
||||||
if (nextToken.Type == HtmlTokenType.EndTag
|
if (nextToken.Type == HtmlTokenType.EndTag
|
||||||
|| nextTag.IsSelfClosing
|
|| nextTag.IsSelfClosing
|
||||||
|| htmlVoidElementsLookup.Contains(nextTag.Data))
|
|| htmlVoidElementsLookup.Contains(nextTag.Data))
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,19 @@ namespace Microsoft.Blazor.Build.Test
|
||||||
node => AssertNode.Element(node, "img", 1));
|
node => AssertNode.Element(node, "img", 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanRenderAttributes()
|
||||||
|
{
|
||||||
|
// Arrange/Act
|
||||||
|
var component = CompileToComponent("<elem attrib-one=\"Value 1\" a2='v2' />");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Collection(GetRenderTree(component),
|
||||||
|
node => AssertNode.Element(node, "elem", 2),
|
||||||
|
node => AssertNode.Attribute(node, "attrib-one", "Value 1"),
|
||||||
|
node => AssertNode.Attribute(node, "a2", "v2"));
|
||||||
|
}
|
||||||
|
|
||||||
private static bool NotWhitespace(RenderTreeNode node)
|
private static bool NotWhitespace(RenderTreeNode node)
|
||||||
=> node.NodeType != RenderTreeNodeType.Text
|
=> node.NodeType != RenderTreeNodeType.Text
|
||||||
|| !string.IsNullOrWhiteSpace(node.TextContent);
|
|| !string.IsNullOrWhiteSpace(node.TextContent);
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using Microsoft.Blazor.Components;
|
|
||||||
using Microsoft.Blazor.RenderTree;
|
|
||||||
|
|
||||||
namespace BasicTestApp
|
|
||||||
{
|
|
||||||
public class RedTextComponent : IComponent
|
|
||||||
{
|
|
||||||
public void BuildRenderTree(RenderTreeBuilder builder)
|
|
||||||
{
|
|
||||||
builder.OpenElement("h1");
|
|
||||||
builder.AddAttribute("style", "color: red;");
|
|
||||||
builder.AddAttribute("customattribute", "somevalue");
|
|
||||||
builder.AddText("Hello, world!");
|
|
||||||
builder.CloseElement();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<h1 style="color: red;" customattribute="somevalue">Hello, world!</h1>
|
||||||
Loading…
Reference in New Issue