private void CreateInput(FormHorizontal form, Type type, object model, List <string> parents)
        {
            foreach (var item in Util.ModelProvider.Instance.GetItems(type))
            {
                var parentsAndCurrent = new List <string>();
                parentsAndCurrent.AddRange(parents);
                parentsAndCurrent.Add(item.Name);
                if (item.Expansion)
                {
                    CreateInput(form, item.Property.PropertyType, model == null ? null : item.Property.GetValue(model), parentsAndCurrent);
                    continue;
                }
                var name    = string.Join(".", parentsAndCurrent);
                var content = Items[item.Property];
                var value   = model == null ? null : content.Property.GetValue(model);
                if (content.Hidden)
                {
                    var hidden = new FormInputCreator.Inputs.Hidden();
                    hidden.Init(content, name, value ?? string.Empty, null);
                    hidden.SetInputMode();
                    hidden.AppendTo(form);
                    continue;
                }

                var parameter = new FormInputCreator.HandlerParameter(content, name, value, Source, form.Script, form.Validator, content.Attributes.Get <Annotations.HtmlDataAttribute>());
                var input     = FormInputCreator.InputCreator.Instance.Handle(parameter);
                if (InputMode)
                {
                    input.SetInputMode();
                }
                else
                {
                    input.SetViewMode();
                }
                form.Add(content.Display, input.CreateGrid(Column.Sm9 | Column.Md10));
                content.SetValidate(form.Validator, name);
            }
        }
        /// <summary>
        /// 创建表单
        /// </summary>
        /// <returns></returns>
        public FormHorizontal Create()
        {
            if (InputMode)
            {
                if (SubmitButton != null)
                {
                    Buttons.Insert(0, SubmitButton);
                }
                if (ResetButton != null)
                {
                    Buttons.Insert(0, ResetButton);
                }
            }
            var form = new FormHorizontal(!InputMode, Buttons);

            if (Action != null)
            {
                form.Attribute(HtmlAttribute.Action, Action.Path);
                Action.Behave.SetTargetAttribute(form);
            }
            CreateInput(form, typeof(TModel), Model, new List <string>());
            return(form);
        }