我正在创建一个简单的窗体。我创建了两个简单的类,Question和QuestionSection。ASP.Net - 显示一组控件
然后我创建了一些问题的子类, SimpleQuestion,MultipleChoiceQuestion,具有不同的行为和标记。
QuestionSection具有设定,比如说,像SurveyForm.aspx所谓
<uc:QuestionSection ID="ucQuestionSection" runat="server">
<questions>
<uc:SimpleQuestion ID="qFirstName" runat="server" QuestionText="First name" />
<uc:SimpleQuestion ID="qLastName" runat="server" QuestionText="Last name" />
<uc:MultipleChoiceQuestion ID="qEmail" runat="server" QuestionText="Email address" />
</questions>
</uc:QuestionSection>
在我QuestionSection.ascx页面的问题集合的性质,像所谓
private List<Question> _Questions = new List<Question>();
public List<Question> Questions
{
get { return _Questions; }
}
我有 -
<div class="portlet-section-body form-fields">
<asp:Panel ID="pnlQuestions" runat="server" ></asp:Panel>
</div>
这是通过此功能加载QuestionSection.ascx.cs
protected void Page_Init(object sender, EventArgs e)
{
foreach (Question q in Questions)
{
pnlQuestions.Controls.Add(q);
}
}
我有几个问题 -
- 这是一个好主意?
- 我有一些关于回发和控件持久性的问题。我的想法是,这些问题控制不是动态的,所以应该工作。但是,回发时,问题控件未显示。
- 是否有更好的控件在QuestionSection中使用,而不是Panel控件?我认为只是使用this.Controls.Add,但我看不到如何在控件集合的任何一侧添加div。
感谢您的努力。这不适用于我,因为我正在寻找问题控制的行为和外观的灵活性(例如,为多项选择问题创建问题的子类)。 我仍然不确定问题控件是动态的。他们不是在页面上启动,然后由QuestionSection控件引用,而不是在代码中创建?无论哪种方式,我意识到我需要添加重新加载代码(从保存加载),并可以使用它来解决持久性问题。 – Spongeboy 2009-10-19 23:00:46