internal override void PopulateSpecification(FieldSpecification spec, bool isPostBack)
        {
            var upload = new FileUpload();
            upload.ID = "ui" + Id;
            upload.CssClass = spec.SpanClass;
            spec.AddControl(new LiteralControl("<div class=\"fileinputs\">"));
            spec.AddControl(GetLabel(upload));
            spec.AddControl(new LiteralControl("</div>"));
            spec.AddControl(upload);
            if (Mandatory)
                spec.AddValidator(GetRequiredFieldValidator(upload));

            spec.Get = () => upload;
        }
        internal override void PopulateSpecification(FieldSpecification spec, bool isPostBack)
        {
            var textBox = new TextBox();
            textBox.ID = "ui" + Id;
            textBox.CssClass = spec.SpanClass;
            if (MultiLine)
                textBox.TextMode = TextBoxMode.MultiLine;
            if (MaxLength.HasValue)
                textBox.MaxLength = MaxLength.Value;

            spec.AddControl(GetLabel(textBox));
            spec.AddControl(textBox);
            if (Mandatory)
                spec.AddValidator(GetRequiredFieldValidator(textBox));

            spec.Get = () => textBox.Text;
        }
        internal override void PopulateSpecification(FieldSpecification spec, bool isPostBack)
        {
            var textBox = new TextBox();
            textBox.ID = "ui" + Id;
            textBox.MaxLength = 150;
            textBox.CssClass = spec.SpanClass;

            spec.AddControl(GetLabel(textBox));
            spec.AddControl(textBox);
            if (Mandatory)
                spec.AddValidator(GetRequiredFieldValidator(textBox));

            var regularExpressionValidator = new RegularExpressionValidator();
            regularExpressionValidator.ValidationExpression = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
            regularExpressionValidator.ControlToValidate = textBox.ID;
            regularExpressionValidator.ErrorMessage = InvalidEmailErrorMessage;
            spec.AddValidator(regularExpressionValidator);
            spec.Get = () => textBox.Text;
        }
        internal override void PopulateSpecification(FieldSpecification spec, bool isPostBack)
        {
            var dropDownList = new DropDownList();
            dropDownList.ID = "ui" + Id;
            dropDownList.Items.Add(new ListItem(string.Empty));
            dropDownList.CssClass = spec.SpanClass;
            foreach (var value in Values)
                dropDownList.Items.Add(value);

            spec.AddControl(GetLabel(dropDownList));
            spec.AddControl(dropDownList);
            if (Mandatory)
            {
                var validator = GetRequiredFieldValidator(dropDownList);
                validator.InitialValue = dropDownList.Items[0].Value;
                spec.AddValidator(validator);
            }

            spec.Get = () => dropDownList.SelectedValue;
        }
        internal override void PopulateSpecification(FieldSpecification spec, bool isPostBack)
        {
            var label = new HtmlGenericControl("label");
            label.Attributes.Add("class", "checkbox");

            var checkbox = new CheckBox();
            checkbox.ID = "ui" + Id;
            if (!isPostBack)
                checkbox.Checked = DefaultChecked;
            label.Controls.Add(checkbox);
            label.Controls.Add(new LiteralControl(Label));
            spec.AddControl(label);

            spec.Get = () => checkbox.Checked;
        }