示例#1
0
        public FormVm(FfHtmlHelper html, MethodInfo mi) : this(html)
        {
            this._actionName = mi.Name;
            var controllerTypeName = mi.ReflectedType.Name;
            this._controllerName = controllerTypeName.Substring(0, controllerTypeName.LastIndexOf("Controller"));

            HtmlHelper = html;

            var inputs = new List <PropertyVm>();


            foreach (var pi in mi.GetParameters())
            {
                if (pi.GetCustomAttributes(true).Any(x => x is FormModelAttribute))
                {
                    inputs.AddRange(pi.ParameterType.GetProperties()
                                    .Select(pi2 => new PropertyVm(pi, pi2).Then(p => p.Name = pi.Name + "." + p.Name)));
                }
                else
                {
                    inputs.Add(new PropertyVm(pi));
                }
            }

            Inputs           = inputs;
            this.DisplayName = mi.Name.Sentencise(true);
            ExcludePropertyErrorsFromValidationSummary = true;
        }
示例#2
0
 public FormVm(FfHtmlHelper html)
 {
     Inputs                = new List <PropertyVm>();
     this.DisplayName      = "";
     this.HtmlHelper       = html;
     ShowValidationSummary = true;
     ExcludePropertyErrorsFromValidationSummary = true;
     RenderAntiForgeryToken = Defaults.RenderAntiForgeryToken;
 }
示例#3
0
 public static string AllValidationMessages(this FfHtmlHelper helper, string modelName)
 {
     if (HasErrors(helper, modelName))
     {
         var message = string.Join(", ", helper.ViewData.ModelState[modelName].Errors.Select(e => e.ErrorMessage));
         return(message);
     }
     return("");
 }
示例#4
0
        public static string UnobtrusiveValidation(FfHtmlHelper helper, PropertyVm property)
        {
            var sb = new StringBuilder();

            var rules = UnobtrusiveValidationRules.SelectMany(r => r(property));

            if (rules.Any() == false)
            {
                return("");
            }

            sb.Append("data-val=\"true\" ");
            foreach (var rule in rules)
            {
                var prefix = string.Format(" data-val-{0}", rule.ValidationType);
                sb.AppendFormat(prefix + "=\"{0}\" ", rule.ErrorMessage);
                foreach (var parameter in rule.ValidationParameters)
                {
                    sb.AppendFormat(prefix + "-{0}=\"{1}\" ", parameter.Key, parameter.Value);
                }
            }

            return(sb.ToString());
        }
示例#5
0
 public static bool HasErrors(this FfHtmlHelper helper, string modelName)
 {
     return(helper.ViewData.ModelState.ContainsKey(modelName) &&
            helper.ViewData.ModelState[modelName].Errors.Any());
 }
示例#6
0
        public static string UnobtrusiveValidation(FfHtmlHelper helper, PropertyVm property)
        {
            var sb = new StringBuilder();

            var rules = UnobtrusiveValidationRules.SelectMany(r => r(property));

            if (rules.Any() == false) return ("");

            sb.Append("data-val=\"true\" ");
            foreach (var rule in rules)
            {
                var prefix = string.Format(" data-val-{0}", rule.ValidationType);
                sb.AppendFormat(prefix + "=\"{0}\" ", rule.ErrorMessage);
                foreach (var parameter in rule.ValidationParameters)
                {
                    sb.AppendFormat(prefix + "-{0}=\"{1}\" ", parameter.Key, parameter.Value);
                }
            }

            return (sb.ToString());
        }
示例#7
0
 public FormRenderScope(FfHtmlHelper htmlHelper, FormVm formVm)
 {
     HtmlHelper = htmlHelper;
     FormVm     = formVm;
 }