コード例 #1
0
        private static void ValidateRequiredAttributes(TagHelperIntermediateNode node, TagHelperDescriptor tagHelper, ComponentIntermediateNode intermediateNode)
        {
            if (intermediateNode.Children.Any(c => c is TagHelperDirectiveAttributeIntermediateNode node && (node.TagHelper?.IsSplatTagHelper() ?? false)))
            {
                // If there are any splat attributes, assume the user may have provided all values.
                // This pass runs earlier than ComponentSplatLoweringPass, so we cannot rely on the presence of SplatIntermediateNode to make this check.
                return;
            }

            foreach (var requiredAttribute in tagHelper.EditorRequiredAttributes)
            {
                if (!IsPresentAsAttribute(requiredAttribute.Name, intermediateNode))
                {
                    intermediateNode.Diagnostics.Add(
                        RazorDiagnosticFactory.CreateComponent_EditorRequiredParameterNotSpecified(
                            node.Source ?? SourceSpan.Undefined,
                            intermediateNode.TagName,
                            requiredAttribute.Name));
                }
            }