.net中mvc问卷制作
在去年这个时候有一个专业老师教我们asp.net,这个老师没有用课本ppt来教授,而是用一个考试系统为引子。一步一步的搭建这个系统,告诉我们软件工程,编程的思想和各种知识。
很到高大上,老师给我们演示,这个考试系统的自动抽题,自动判分。感觉可以收获很多很多,但是讲到添加用户这,这门课就结束了。还没有讲到题目的显示呢。
最近接到了一个思修问卷的项目,怎么做题目的显示呢?题目类型有三种,单选、多选、填空。当时感觉蒙蒙的,这个怎么做?后来看了看发布的系统和积分问卷的写法和数据库的数据。明白了大概的思路。
首先看一看关于题的数据库。
在来看一看,选项的id。
选项中的A,B,C在数据库中都已经添加好了,现在需要做的就显示到页面中。(每一道题要和对应的选项连接)
在d层中一个数据一个数据的连接,类型表连着问题表,问题表连着选项表。
List<examinationModel> examinationreally = new List<examinationModel>(); //题库包var exam = (from qte in dbcontext.T_QuesTypejoin qun in dbcontext.T_Question on qte.quseTypeID equals qun.quseTypeIDjoin opn in dbcontext.T_Option on qun.quesID equals opn.quesIDselect new examinationModel(){questype = qte.quesType, //问题类型quesTypeID = qun.quseTypeID, //类型idquesID = qun.quesID,quesContent = qun.quesContent,optionID = opn.optionID,optionContent = opn.optionContent});
因为在数据库中添加的时候,不能确定单选题,多选题,填空的顺序所以要在B层规划好顺序, B层怎么写的呢1?
到底所以的题的记录,然后在重新定义一个list,首先判断是否是单选,然后添加把所有的单选添加完在判断多选题,然后在全部添加多选,最后再添加填空。
//传递返回到conQuestionDAL 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 examinationreallygroup exam by exam.quesID into ttselect 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; //题号可以从1ok += 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");}
就是这种效果,谢谢大家的建议。
.net中mvc问卷制作相关推荐
- wordpress创建_如何在WordPress中创建问卷(简易方式)
wordpress创建 Do you want to create a questionnaire in WordPress to survey your visitors or collect da ...
- Unity使用MVC架构制作牧师与魔鬼小游戏
Unity使用MVC架构制作牧师与魔鬼小游戏 MVC架构简介 MVC概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller) ...
- ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4
ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G ...
- Asp.Net中MVC缓存详解
本文通过介绍了Asp.Net中MVC缓存的种类,以及他们之间的区别等内容,让学习者能够深入的了解MVC缓存的原理机制,以下是具体内容: 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术.当 w ...
- 高精度矢量汉字的一种填充方法_使用PS中的钢笔工具制作一只蝴蝶矢量插画
使用PS中的钢笔工具制作一只蝴蝶矢量插画 矢量插画用途广泛,很漂亮.但是对于很多艺术家来说,创建起来太数字化而且不直观. 然而,Photoshop 的最新版本CC就解决了你在使用钢笔工具添加新变量碰到 ...
- ASP.NET中MVC默认模板的项目结构
场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...
- ASP.NET中MVC添加Controller以及访问其Action
场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...
- 利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具
利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具 独立观察员 2020 年 12 月 26 日 前一段看到微信公众号 "码农读书" 上发了一篇文章&l ...
- android动画view上移,在Android开发中使用View制作一个引导动画
在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...
最新文章
- 基于Golang的简单web服务程序开发——CloudGo
- Alt + sysrq + REISUB doesn't reboot my laptop
- 一文看清这些年自监督和无监督的进展
- 惊呆!不用一张图片,却训出个图像识别SOTA?
- I.MX6 U-boot Kernel backlight setting
- Fixjs——显示容器基类DisplayObjectContainer
- 一张图读懂MVC设计模式,从用户发起请求到获取响应,应用内部到底是如何数据流转、业务串联的
- linux学习笔记:磁盘挂载与卸载命令
- SQL SERVER 和EXCEL的数据导入导出
- 《机器视觉算法与应用》第3章 机器视觉算法之模板匹配——学习笔记
- java cximage_CxImage的简单用法
- 桥接命令brctl的用法
- 基于SVM的手写字体识别
- 【微信小程序】针对测试号获取openid报错40125错误的解决方案
- Python爬虫学习-简单爬取网页数据
- linux capability详解与容器中的capability
- oracle设置密码永不过期
- DanmuVis: Visualizing Danmu Content Dynamics and AssociatedViewer Behaviors in Online Videos
- 我不敢再哭了,因为我怕自己成为职场上的杨超越
- pip install paddlepaddle 报错 command ‘/usr/bin/gcc‘ failed with exit code 1 或 command ‘gcc‘ 报错