.net中mvc问卷制作
来源:互联网 发布:c语言能够做什么 编辑:程序博客网 时间:2024/06/05 11:31
在去年这个时候有一个专业老师教我们asp.net,这个老师没有用课本ppt来教授,而是用一个考试系统为引子。一步一步的搭建这个系统,告诉我们软件工程,编程的思想和各种知识。
很到高大上,老师给我们演示,这个考试系统的自动抽题,自动判分。感觉可以收获很多很多,但是讲到添加用户这,这门课就结束了。还没有讲到题目的显示呢。
最近接到了一个思修问卷的项目,怎么做题目的显示呢?题目类型有三种,单选、多选、填空。当时感觉蒙蒙的,这个怎么做?后来看了看发布的系统和积分问卷的写法和数据库的数据。明白了大概的思路。
首先看一看关于题的数据库。
在来看一看,选项的id。
选项中的A,B,C在数据库中都已经添加好了,现在需要做的就显示到页面中。(每一道题要和对应的选项连接)
在d层中一个数据一个数据的连接,类型表连着问题表,问题表连着选项表。
List<examinationModel> examinationreally = new List<examinationModel>(); //题库包 var exam = (from qte in dbcontext.T_QuesType join qun in dbcontext.T_Question on qte.quseTypeID equals qun.quseTypeID join opn in dbcontext.T_Option on qun.quesID equals opn.quesID select new examinationModel() { questype = qte.quesType, //问题类型 quesTypeID = qun.quseTypeID, //类型id quesID = qun.quesID, quesContent = qun.quesContent, optionID = opn.optionID, optionContent = opn.optionContent } );因为在数据库中添加的时候,不能确定单选题,多选题,填空的顺序所以要在B层规划好顺序, B层怎么写的呢1?
到底所以的题的记录,然后在重新定义一个list,首先判断是否是单选,然后添加把所有的单选添加完在判断多选题,然后在全部添加多选,最后再添加填空。
//传递返回到con QuestionDAL quDAL = new QuestionDAL(); List<examinationModel> bridge = new List<examinationModel>();//所有的 bridge = quDAL.getexamination(); List<examinationModel> bridgefirst = new List<examinationModel>();//所有的单选题 //这样的目的就是为了整个卷面都按照单选,多选,填空这个顺序走下来 for (int i = 0; i < bridge.Count; i++) { if (bridge[i].questype=="单选") { bridgefirst.Add(bridge[i]); } } for (int i = 0; i < bridge.Count; i++) { if (bridge[i].questype == "多选") { bridgefirst.Add(bridge[i]); } } for (int i = 0; i < bridge.Count; i++) { if (bridge[i].questype == "填空") { bridgefirst.Add(bridge[i]); } } for (int i = 0; i < bridge.Count; i++) { if (bridge[i].questype != "填空" && bridge[i].questype != "多选" && bridge[i].questype != "单选") { bridgefirst.Add(bridge[i]); } } return bridgefirst;
因为所有的选项都跟着向对应的问题,所以就有进行缩减,只有一个问题然后在跟多个选项。一个问题连着很多选项其中就是添加html代码进行简单的布局。把整个问卷化成一个字符串然后传到页面。
public ActionResult Index() { //页面初始化得到答题的页面 //建立一个新的数据包含问题 //建立一个新的数据包含选项 List<examinationModel> questionoption = new List<examinationModel>(); QuestionBLL queBLL = new QuestionBLL(); List<examinationModel> examinationreally = queBLL.getexamination(); string ok = ""; //各种的答案的字符连接 //string oksum = ""; //各种的答案的字符连接 if (examinationreally.Count==0) { ok = "<span>管理员正在配题</span>"; } else { //现在的情况是记录表阶乘,先得到各个问题,在根据问题找选项 //所有数据大循环 //现在得到了所有的问题,唯一 questionsum = (from exam in examinationreally group exam by exam.quesID into tt select new examinationModel() { quesID = tt.Select(p => p.quesID).First(), quesContent = tt.Select(y => y.quesContent).First(), questype=tt.Select(p=>p.questype).First() }).ToList(); for (int i = 0; i < questionsum.Count; i++) //某个具体的题的内容 { int k= i + 1; //题号可以从1 ok += k + "、" + questionsum[i].quesContent; ok += "<br><br>"; for (int j = 0; j < examinationreally.Count; j++) { if (questionsum[i].quesID==examinationreally[j].quesID) { //首先进行选择题的判断 if (questionsum[i].questype=="单选") { ok += "<input type=\"radio\" \" name=\"single" + k + "\" value=\"" + questionsum[i].quesID + "%" + examinationreally[j].optionID + "\" /> "; //问题id和答案id都有 ok += examinationreally[j].optionContent; ok += "<br><br>"; } //第二判断多选题 if (questionsum[i].questype=="多选") { ok += "<input type=\"checkbox\" \" name=\"checkbox" + k + "\" value=\"" + questionsum[i].quesID + "%" + examinationreally[j].optionID + "\" /> "; //问题id和答案id都有 ok += examinationreally[j].optionContent; ok += "<br><br>"; } //第三判断填空题 if (questionsum[i].questype=="填空") { ok += " <textarea rows='3' cols='20' maxlength='100' name=\"fill" + k + "\" style=\"width:600px;height:110px;\" /></textarea>"; ok += "<br>"; } } } } } ViewBag.Message = ok; return View("Question"); }
就是这种效果,谢谢大家的建议。
阅读全文
0 0
- .net中mvc问卷制作
- ASP.NET制作调查问卷
- .NET MVC报表的制作
- 使用google doc制作在线问卷调查表
- 利用Excel制作问卷的饼状图
- 利用Excel制作问卷的柱形图
- 网页制作 - 问卷网的首页
- 问卷
- 问卷
- .net c# mvc模式中
- ASP.NET MVC中缓存
- ASP.NET mvc中session
- Asp.net mvc中过滤器
- 问卷制作小提示:如何处理含逻辑跳转题的问卷
- [Asp.net mvc]Asp.net mvc 中使用LocalStorage
- [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler
- 使用 Vue.js 制作一个简单的调查问卷平台
- 使用 Vue.js 制作一个简单的调查问卷平台
- Matlab读取文件函数总结
- 数据结构第七周项目-停车场模拟(栈和队列综合)
- coursera deep learning course4 week2
- linux基本命令
- 【模9】digital roots[hdu 1013]
- .net中mvc问卷制作
- SVN迁移到GIT后续推送
- angular路由
- 当程序员没了互联网,该如何继续学习写代码?
- 大一新生信息可视化展示(基于Echarts)
- Spring教程第四篇:Spring事务
- 宏的使用
- java8 lambda 处理分类和子分类的技巧
- Unity3D 屏幕比例与摄像机设置