首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net 动态生成试卷的有关问题

2013-06-26 
asp.net 动态生成试卷的问题要实现生成网上试卷的功能,试卷题目类型有单选,多选,和问答题。单选,多选题选项

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>&nbsp;<input type="text" class="ipt1" name="attr_[{0}]_1"/>", item.ID);
                input += string.Format("&nbsp;&nbsp;属性价格&nbsp;<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>&nbsp;<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>&nbsp;&nbsp;属性价格&nbsp;<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>&nbsp;<textarea class="ipt3" name="attr_[{0}]_1" cols="35" rows="4"></textarea>&nbsp;&nbsp;属性价格&nbsp;<input style="width:50px;" type="text" class="ipt1" name="attr_price_[{0}]_1"/></div>", item.ID);
            }
        }

        return input;
    }


[解决办法]
这个问题应该和你数据库设计关系要多一点,如果数据库设计好了,就生成试卷和答题很容易搞定的,

外部使用jquery 遍历出所有的答题答案 在把每个题的正确答案放在隐藏与对比一下就ok了.
[解决办法]
你是纠结客户端与服务器控件的问题吧?

那你就把所有的服务器控件都设置成:CheckBoxList

通过JS控制实现单选 还是多选

热点排行