コード例 #1
0
        /// <summary>
        /// </summary>
        public static Microsoft.AspNetCore.Blazor.RenderFragment ValidationMessageFor <T, V>(
            this ModelStateDictionary <T> model,
            Expression <Func <T, V> > Field,
            object htmlAttributes = null,
            Rendering.ICustomValidationMessage customValidationMessage = null)
        {
            var property = PropertyHelper <T> .GetProperty(Field);

            var name = property.Name;

            return((builder) =>
            {
                string errorDescription = model.GetValidationResults()?
                                          .Where(x => ((IEnumerable <string>)x.MemberNames).Contains(name))
                                          .Select(x => x.ErrorMessage)
                                          .FirstOrDefault();
                WriteMessage(customValidationMessage, builder, name, errorDescription, htmlAttributes);
            });
        }
コード例 #2
0
        private static void WriteMessage(Rendering.ICustomValidationMessage customMessage,
                                         RenderTreeBuilder builder,
                                         string name, string errorDescription, object htmlAttributes = null)
        {
            if (string.IsNullOrEmpty(errorDescription) == false)
            {
                if (customMessage != null)
                {
                    customMessage.WriteValidationMessage(builder, name, errorDescription, htmlAttributes);
                }
                else
                {
                    int sequence = 1;

                    builder.OpenElement(sequence++, "p");
                    builder.AddContent(sequence++, errorDescription);

                    builder.WriteHtmlAttributes(ref sequence, htmlAttributes);

                    builder.CloseElement();
                }
            }
        }