private Control RenderPropertyPrompt(CustomProperty prop) { var container = new HtmlGenericControl(); Control prompt = null; // prompt switch (prop.Type) { case PropertyType.String: var tb = new TextBox(); tb.ID = "tb" + prop.Name; tb.Columns = prop.Columns; tb.Rows = prop.Rows; if (tb.Rows > 1) { tb.TextMode = TextBoxMode.MultiLine; } tb.Text = prop.Value; prompt = tb; break; case PropertyType.Boolean: var cb = new CheckBox(); cb.ID = "cb" + prop.Name; var temp_result = cb.Checked; bool.TryParse(prop.Value, out temp_result); cb.Checked = temp_result; prompt = cb; break; case PropertyType.Choice: var ddl_1 = new DropDownList(); ddl_1.ID = "ddl" + prop.Name; var li_1 = default(ListItem); foreach (var ch in prop.Choices) { li_1 = new ListItem(ch.Caption, ch.Value); li_1.Selected = li_1.Value == prop.Value; ddl_1.Items.Add(li_1); } prompt = ddl_1; break; case PropertyType.Directory: var ddl_2 = new DropDownList(); ddl_2.ID = "ddl" + prop.Name; var dir_1 = new System.IO.DirectoryInfo(MapPath(prop.Directory)); var li_2 = default(ListItem); foreach (var subdir in dir_1.GetDirectories()) { if (!subdir.Name.StartsWith("_")) { li_2 = new ListItem(Strings.StrConv(subdir.Name.Replace("-", " "), VbStrConv.ProperCase, 0), subdir.Name); li_2.Selected = li_2.Value == prop.Value; ddl_2.Items.Add(li_2); } } prompt = ddl_2; break; case PropertyType.Files: var ddl = new DropDownList(); ddl.ID = "ddl" + prop.Name; var dir = new System.IO.DirectoryInfo(MapPath(prop.Directory)); var li = default(ListItem); foreach (var subfile in dir.GetFiles()) { if (!subfile.Name.StartsWith("_")) { li = new ListItem(subfile.Name, subfile.Name); li.Selected = li.Value == prop.Value; ddl.Items.Add(li); } } prompt = ddl; break; } container.Controls.Add(prompt); var addedBreak = false; if (!string.IsNullOrEmpty(prop.ValidationExpression)) { var validate = new RegularExpressionValidator(); validate.ValidationExpression = ValidationHelpers.CommonValidator(prop.ValidationExpression); validate.ErrorMessage = prop.ValidationMessage; validate.ControlToValidate = prompt.ID; validate.Display = ValidatorDisplay.Dynamic; if (!addedBreak) { container.Controls.Add(new LiteralControl("<br />")); } container.Controls.Add(validate); addedBreak = true; } if (prop.Required) { var validate = new RequiredFieldValidator(); validate.ErrorMessage = string.Format("{0} is required", StringHelpers.Wordify(prop.Name)); validate.ControlToValidate = prompt.ID; validate.Display = ValidatorDisplay.Dynamic; if (!addedBreak) { container.Controls.Add(new LiteralControl("<br />")); } container.Controls.Add(validate); addedBreak = true; } return(container); }