Вы можете создать дополнительную aspx-форму, в которой пользователь (или администратор) может определять и создавать свои собственные формы, вы предоставляете имена переменных, и они решают добавить элементы управления, сохранить их в определенном виде.схема в базе данных, например,
UserForm: UserID FormID
Form: FormID FormName
FormElement: FormID VariableName Индекс ControlType
Конечно, это также может бытьсделано администратором и будет доступно всем.
Чтобы просмотреть конкретные формы, вы можете добавить еще одну aspx-страницу, содержащую следующий код:
protected void Page_Load(object sender, EventArgs e)
{
//you saved the FormName or ID to Session when you accessed it
string formName = Session["FormName"].ToString();
//this handles getting the elements for this Form from DB
List<FormElement> elementList = FormElement.GetForForm(formName);
this.renderForm(elementList);
}
private void renderForm(List<FormElement> eList)
{
foreach(FormElement fe in eList)
{
//Labels left, Controls right, of course this is just a design decision
if(fe.Index%2==1)
{
Label lbl = new Label();
lbl.Text = fe.Variable;
lbl.ID = fe.ControlType + fe.Variable;
divLeft.Controls.Add(lbl);
}
else
{
dynamic ctrl = null;
switch (fe.ControlType)
{
case "TextBox":
ctrl = new TextBox();
break;
case "CheckBox":
ctrl = new CheckBox();
break;
default:
break;
}
ctrl.ID = fe.ControlType + fe.Variable;
divRight.Controls.Add(ctrl);
}
}
}
Позже, после того как пользователь нажмет на "Отправить"вы сможете получать значения, введенные в эти элементы управления, используя divRight.FindControl (fe.ControlType + fe.Variable), поскольку он должен быть уникальным для каждой формы.
Этот подход предполагает, что вы используете .NET4.0 (из-за динамического), но, конечно, вы можете сделать это без проблем, просто будет больше кода.
Пожалуйста, дайте мне знать, если это такВы искали или если это было полезно.
Спасибо,
Деннис