Co-authored-by: Filip Staffa <git@filipstaffa.net>
This commit is contained in:
parent
827751ffe1
commit
94941438d3
|
|
@ -652,6 +652,7 @@ namespace Microsoft.AspNetCore.Mvc.Rendering
|
|||
[System.Diagnostics.DebuggerDisplayAttribute("{DebuggerToString()}")]
|
||||
public partial class TagBuilder : Microsoft.AspNetCore.Html.IHtmlContent
|
||||
{
|
||||
public TagBuilder(Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tagBuilder) { }
|
||||
public TagBuilder(string tagName) { }
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.AttributeDictionary Attributes { get { throw null; } }
|
||||
public bool HasInnerHtml { get { throw null; } }
|
||||
|
|
|
|||
|
|
@ -37,6 +37,34 @@ namespace Microsoft.AspNetCore.Mvc.Rendering
|
|||
TagName = tagName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a copy of the HTML tag passed as <paramref name="tagBuilder"/>.
|
||||
/// </summary>
|
||||
/// <param name="tagBuilder">Tag to copy.</param>
|
||||
public TagBuilder(TagBuilder tagBuilder)
|
||||
{
|
||||
if (tagBuilder == null)
|
||||
{
|
||||
throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(tagBuilder));
|
||||
}
|
||||
|
||||
if (tagBuilder._attributes != null)
|
||||
{
|
||||
foreach (var tag in tagBuilder._attributes)
|
||||
{
|
||||
Attributes.Add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
if (tagBuilder._innerHtml != null)
|
||||
{
|
||||
tagBuilder.InnerHtml.CopyTo(InnerHtml);
|
||||
}
|
||||
|
||||
TagName = tagBuilder.TagName;
|
||||
TagRenderMode = tagBuilder.TagRenderMode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the set of attributes that will be written to the tag.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -253,5 +253,64 @@ namespace Microsoft.AspNetCore.Mvc.Core.Rendering
|
|||
// Assert
|
||||
Assert.Equal("<span>Hello</span>", HtmlContentUtilities.HtmlContentToString(tag));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_Copy_CopiesTagRenderMode()
|
||||
{
|
||||
// Arrange
|
||||
var originalTagBuilder = new TagBuilder("p");
|
||||
originalTagBuilder.TagRenderMode = TagRenderMode.SelfClosing;
|
||||
|
||||
// Act
|
||||
var clonedTagBuilder = new TagBuilder(originalTagBuilder);
|
||||
|
||||
|
||||
// Assert
|
||||
Assert.Equal(originalTagBuilder.TagRenderMode, clonedTagBuilder.TagRenderMode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_Copy_DoesShallowCopyOfInnerHtml()
|
||||
{
|
||||
// Arrange
|
||||
var originalTagBuilder = new TagBuilder("p");
|
||||
originalTagBuilder.InnerHtml.AppendHtml("<span>Hello</span>");
|
||||
|
||||
// Act
|
||||
var clonedTagBuilder = new TagBuilder(originalTagBuilder);
|
||||
|
||||
// Assert
|
||||
Assert.NotEqual(originalTagBuilder.InnerHtml, clonedTagBuilder.InnerHtml);
|
||||
Assert.Equal(HtmlContentUtilities.HtmlContentToString(originalTagBuilder.RenderBody()), HtmlContentUtilities.HtmlContentToString(clonedTagBuilder.RenderBody()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_Copy_DoesShallowCopyOfAttributes()
|
||||
{
|
||||
// Arrange
|
||||
var originalTagBuilder = new TagBuilder("p");
|
||||
originalTagBuilder.AddCssClass("class1");
|
||||
|
||||
// Act
|
||||
var clonedTagBuilder = new TagBuilder(originalTagBuilder);
|
||||
|
||||
// Assert
|
||||
Assert.NotSame(originalTagBuilder.Attributes, clonedTagBuilder.Attributes);
|
||||
Assert.Equal(originalTagBuilder.Attributes, clonedTagBuilder.Attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_Copy_CopiesTagName()
|
||||
{
|
||||
// Arrange
|
||||
var originalTagBuilder = new TagBuilder("p");
|
||||
|
||||
// Act
|
||||
|
||||
var clonedTagBuilder = new TagBuilder(originalTagBuilder);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(originalTagBuilder.TagName, clonedTagBuilder.TagName);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue