public void MetadataControlResolver_ReloadAllControls_PropertyMetadata() { TestInit(); var resolver = new MetadataControlResolver(); var allControls = resolver.ReloadAllControls(context); var repeater = allControls.FirstOrDefault(c => c.DisplayText == "dot:Repeater"); var itemTemplateProperty = resolver.GetMetadata("dot:Repeater").Properties.FirstOrDefault(p => p.Name == "ItemTemplate"); Assert.IsTrue(itemTemplateProperty.IsTemplate); Assert.IsTrue(itemTemplateProperty.IsElement); }
private void FixElement(StringBuilder edit, MetadataControlResolver metadataControlResolver, ITextBuffer textBuffer, DothtmlElementNode element) { // fix element name var metadata = metadataControlResolver.GetMetadata(element.FullTagName); if (metadata != null) { // we have found the metadata for the control if (metadata.FullTagName != element.FullTagName) { // the used name differs from the correct, fix the tag name edit.SetRange(element.TagPrefixNode.StartPosition, element.TagPrefixNode.Length, metadata.TagPrefix); edit.SetRange(element.TagNameNode.StartPosition, element.TagNameNode.Length, metadata.TagName); if (element.CorrespondingEndTag != null) { edit.SetRange(element.CorrespondingEndTag.TagPrefixNode.StartPosition, element.CorrespondingEndTag.TagPrefixNode.Length, metadata.TagPrefix); edit.SetRange(element.CorrespondingEndTag.TagNameNode.StartPosition, element.CorrespondingEndTag.TagNameNode.Length, metadata.TagName); } } // fix attribute names foreach (var attribute in element.Attributes) { var property = metadata.GetProperty(attribute.AttributeName); if (property != null && property.Name != attribute.AttributeName) { // the used name differs from the correct, fix the tag name edit.SetRange(attribute.AttributeNameNode.StartPosition, attribute.AttributeNameNode.Length, property.Name); } } // fix property elements foreach (var child in element.Content.OfType <DothtmlElementNode>()) { var property = metadata.GetProperty(child.FullTagName); if (property != null && property.IsElement && property.Name != child.FullTagName) { // the used name differs from the correct, fix the tag name edit.SetRange(child.TagPrefixNode.StartPosition, child.TagPrefixNode.Length, property.Name); if (child.CorrespondingEndTag != null) { edit.SetRange(child.CorrespondingEndTag.TagNameNode.StartPosition, child.CorrespondingEndTag.TagNameNode.Length, property.Name); } } } } }