我正在开发在线测验模块。 所以我定义了两种类型的问题。
- 多选单选(单选按钮)
- 多项选择多项选项(复选框)
- 其他 Naswer(文本框)
我使用了嵌套转发器。第一个转发器绑定(bind)了问题。 并且子中继器绑定(bind)可用于问题的选项。
所以我想要的是检查条件,
就像如果我的问题类型是 MS(多选单选项),我将用单选按钮绑定(bind) 4 个选项。
如果是MM(Multiple Choice Multiple Option),那么我会将Options与Checkbox绑定(bind)。
那么我如何检查aspx文件中的这样的条件和代码?
最佳答案
这是一种方法:
输出
ASPX
<asp:Repeater runat="server" ID="repeater" DataSourceID="ods"
onitemdatabound="repeater_ItemDataBound">
<ItemTemplate>
<asp:Label Text='<%# Eval("QuestionText") %>' runat="server" />
<br />
<asp:Panel runat="server" ID="panel">
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="ods" runat="server"
SelectMethod="GetQuestions"
TypeName="WebApplication1.Questions.QuestionsContext">
</asp:ObjectDataSource>
隐藏代码
protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var q = e.Item.DataItem as Question;
if (q == null)
throw new InvalidOperationException();
var panel = e.Item.FindControl("panel");
if (q.MultipleAnswers)
{
var checks = new CheckBoxList { DataSource = q.Answers, DataTextField = "AnswerText", DataValueField = "ID" };
checks.DataBind();
panel.Controls.Add(checks);
}
else
{
var radios = new RadioButtonList { DataSource = q.Answers, DataTextField = "AnswerText", DataValueField = "ID" };
radios.DataBind();
panel.Controls.Add(radios);
}
}
数据组件
这仅用于测试,请将其替换为您的数据源
public class QuestionsContext
{
public IEnumerable<Question> GetQuestions()
{
var q = Builder<Question>.CreateListOfSize(5).Build().ToList();
q.ForEach(x =>
{
x.ID = Guid.NewGuid();
x.Answers = Builder<Answer>.CreateListOfSize(4)
.All().With(y => y.Question, x)
.Build().ToList();
});
return q;
}
}
型号
public class Answer
{
public Guid ID { get; set; }
public Question Question { get; set; }
public string AnswerText { get; set; }
public bool IsCorrect { get; set; }
}
public class Question
{
public Guid ID { get; set; }
public string QuestionText { get; set; }
public IEnumerable<Answer> Answers { get; set; }
public bool MultipleAnswers { get; set; }
public Question()
{
this.Answers = Enumerable.Empty<Answer>();
}
}
关于c# - 需要中继器调节方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526189/