Пример #1
0
        private static AngularTagBuilder CreateValidationTagBuilder(ValidationRule rule, string nodeName, bool onDirtyOnly, IDictionary <string, object> htmlAttributes)
        {
            var tagBuilder = new AngularTagBuilder("span");

            tagBuilder.Attributes["class"] = AngularConfiguration.HelpCssClass;

            string ngShow = string.Empty;

            if (rule.ValidationParameters.Any())
            {
                var validations = rule.ValidationParameters.Select(kvp => string.Format("{0}.$error.{1}", nodeName, kvp.Key));
                ngShow += string.Format("({0})", string.Join(" || ", validations));

                if (onDirtyOnly)
                {
                    ngShow += string.Format(" && {0}.$dirty", nodeName);
                }
            }

            tagBuilder.Attributes["ng-show"] = ngShow.TrimEnd(' ');
            tagBuilder.MergeAttributes(htmlAttributes, true);

            tagBuilder.SetInnerText(rule.ErrorMessage);
            return(tagBuilder);
        }
Пример #2
0
        public IHtmlString Label <TProperty>(Expression <Func <TModel, TProperty> > expression, IDictionary <string, object> htmlAttributes)
        {
            var    metadata    = ModelMetadata.FromLambdaExpression(expression, _helper.ViewData);
            string displayName = metadata.DisplayName ?? metadata.PropertyName;

            var tagBuilder = new AngularTagBuilder("label");

            tagBuilder.Attributes["class"] = AngularConfiguration.LabelCssClass;

            var expressionText = ExpressionHelper.GetExpressionText(expression);
            var nodeName       = GetElementIdentifier(expressionText);

            tagBuilder.MergeAttribute("for", nodeName);

            tagBuilder.SetInnerText(displayName);

            tagBuilder.MergeAttributes(htmlAttributes, true);

            return(new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal)));
        }
Пример #3
0
        public IHtmlString Dropdown <TProperty>(Expression <Func <TModel, TProperty> > expression, string ngOptions, string emptyElementText, IDictionary <string, object> htmlAttributes)
        {
            var metadata   = ModelMetadata.FromLambdaExpression(expression, _helper.ViewData);
            var tagBuilder = CreateTagBuilder(expression, "select", htmlAttributes, metadata);

            if (!string.IsNullOrEmpty(ngOptions))
            {
                tagBuilder.Attributes["ng-options"] = ngOptions;
            }

            if (!string.IsNullOrEmpty(emptyElementText))
            {
                var option = new AngularTagBuilder("option");
                option.Attributes["value"] = string.Empty;
                option.SetInnerText(emptyElementText);
                tagBuilder.InnerHtml = option.ToString(TagRenderMode.Normal);
            }

            return(new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal)));
        }