asp.net 动态生成试卷的问题
要实现生成网上试卷的功能,试卷题目类型有单选,多选,和问答题。单选,多选题选项个数不确定,题目个数也不确定。数据库中有试题表,试题选项表,用户答案表。我怎样从数据库中读取试题和选项动态生成试卷? ASP.NET
[解决办法]
弄自定义的选择,由创建试卷的人来选定各种类型题目的数量,然后你去对应的题目里面随即抽取对应数量的题目出来即可-[喽水把子]
[解决办法]
试题是属于试卷的,首先要根据哪套试卷来遍历所有题目,根据题目类型分别加载本类型下的试题,再根据具体题目找出所有选项
分块会比较好,单选区域、多选区域、问答区域,然后分别遍历显示
[解决办法]
你可以在没有读数据库之前用随机数生成三种题型各个的题目数量,让后再到数据库随机读取每个题型相应的题数量
[解决办法]
根据具体情况,后台给个方向,让管理员添加试题的时候选择选择类型:单选,多选(给这栏设置个字段)
前台试题调用的时候,根据选择类型,在后台设置控件,服务器控件实现起来太麻烦,建议使用ajax的方式
追加服务器控件,实现多选和单选
下边是个例子,和你说的差不多
/// <summary>
/// 创建控件
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
private string createControl(Model.ProductAttribute item)
{
string input = "";
if (item.OptionalType.Value == 0)
{
if (item.EntryType.Value == 0) /*input*/
{
input += string.Format("<div><input type="text" class="ipt1" name="attr_[{0}]"/></div>", item.ID);
}
else if (item.EntryType.Value == 1)/*select*/
{
input += string.Format("<div><select name="attr_[{0}]">", item.ID);
input += "<option value="请选择">请选择</option>";
foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
{
if (!string.IsNullOrEmpty(option))
{
input += "<option value="" + option + "">" + option + "</option>";
}
}
input += "</select></div>";
}
else if (item.EntryType.Value == 2)/*textarea*/
{
input += string.Format("<div><textarea class="ipt3" name="attr_[{0}]" cols="35" rows="4"></textarea></div>", item.ID);
}
}
else if (item.OptionalType.Value == 1
[解决办法]
item.OptionalType.Value == 2)
{
if (item.EntryType.Value == 0)
{
input += string.Format("<input name="hid_attr_{0}" type="hidden" value="1" /><div><a href="javascript:;" onclick="addControl(this,{0});">[+]</a> <input type="text" class="ipt1" name="attr_[{0}]_1"/>", item.ID);
input += string.Format(" 属性价格 <input class="ipt1" style="width:50px;" type="text" name="attr_price_[{0}]_1"/></div>", item.ID);
}
if (item.EntryType.Value == 1)
{
input += string.Format("<input name="hid_attr_{0}" type="hidden" value="1" /><div><a href="javascript:;" onclick="addControl(this,{0});">[+]</a> <select name="attr_[{0}]_1">", item.ID);
input += "<option value="请选择">请选择</option>";
foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
{
if (!string.IsNullOrEmpty(option))
{
input += "<option value="" + option + "">" + option + "</option>";
}
}
input += string.Format("</select> 属性价格 <input class="ipt1" style="width:50px;" type="text" name="attr_price_[{0}]_1"/></div>", item.ID);
}
else if (item.EntryType.Value == 2)
{
input += string.Format("<input name="hid_attr_{0}" type="hidden" value="1" /><div><a href="javascript:;" onclick="addControl(this,{0});">[+]</a> <textarea class="ipt3" name="attr_[{0}]_1" cols="35" rows="4"></textarea> 属性价格 <input style="width:50px;" type="text" class="ipt1" name="attr_price_[{0}]_1"/></div>", item.ID);
}
}
return input;
}