在去年这个时候有一个专业老师教我们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问卷制作相关推荐

  1. wordpress创建_如何在WordPress中创建问卷(简易方式)

    wordpress创建 Do you want to create a questionnaire in WordPress to survey your visitors or collect da ...

  2. Unity使用MVC架构制作牧师与魔鬼小游戏

    Unity使用MVC架构制作牧师与魔鬼小游戏 MVC架构简介 MVC概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller) ...

  3. ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4

    ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G ...

  4. Asp.Net中MVC缓存详解

    本文通过介绍了Asp.Net中MVC缓存的种类,以及他们之间的区别等内容,让学习者能够深入的了解MVC缓存的原理机制,以下是具体内容: 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术.当 w ...

  5. 高精度矢量汉字的一种填充方法_使用PS中的钢笔工具制作一只蝴蝶矢量插画

    使用PS中的钢笔工具制作一只蝴蝶矢量插画 矢量插画用途广泛,很漂亮.但是对于很多艺术家来说,创建起来太数字化而且不直观. 然而,Photoshop 的最新版本CC就解决了你在使用钢笔工具添加新变量碰到 ...

  6. ASP.NET中MVC默认模板的项目结构

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...

  7. ASP.NET中MVC添加Controller以及访问其Action

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...

  8. 利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具

    利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具 独立观察员 2020 年 12 月 26 日 前一段看到微信公众号 "码农读书" 上发了一篇文章&l ...

  9. android动画view上移,在Android开发中使用View制作一个引导动画

    在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...

最新文章

  1. 基于Golang的简单web服务程序开发——CloudGo
  2. Alt + sysrq + REISUB doesn't reboot my laptop
  3. 一文看清这些年自监督和无监督的进展
  4. 惊呆!不用一张图片,却训出个图像识别SOTA?
  5. I.MX6 U-boot Kernel backlight setting
  6. Fixjs——显示容器基类DisplayObjectContainer
  7. 一张图读懂MVC设计模式,从用户发起请求到获取响应,应用内部到底是如何数据流转、业务串联的
  8. linux学习笔记:磁盘挂载与卸载命令
  9. SQL SERVER 和EXCEL的数据导入导出
  10. 《机器视觉算法与应用》第3章 机器视觉算法之模板匹配——学习笔记
  11. java cximage_CxImage的简单用法
  12. 桥接命令brctl的用法
  13. 基于SVM的手写字体识别
  14. 【微信小程序】针对测试号获取openid报错40125错误的解决方案
  15. Python爬虫学习-简单爬取网页数据
  16. linux capability详解与容器中的capability
  17. oracle设置密码永不过期
  18. DanmuVis: Visualizing Danmu Content Dynamics and AssociatedViewer Behaviors in Online Videos
  19. 我不敢再哭了,因为我怕自己成为职场上的杨超越
  20. pip install paddlepaddle 报错 command ‘/usr/bin/gcc‘ failed with exit code 1 或 command ‘gcc‘ 报错

热门文章

  1. 武汉理工大学计算机网,武汉理工大学网络信息中心
  2. 移动端利用原生h5拨打电话
  3. 搭建个人博客:域名解析 + 备案
  4. linux core文件默认位置,linux下core文件
  5. Reflections 介绍
  6. 九大内部排序算法(快速排序、归并排序、堆排序、希尔排序、基数排序)
  7. 网络视角 域名革命
  8. 【图像处理】彩色直方图均衡
  9. python中locals函数_python中locals和globals函数
  10. 解决华硕电脑右键word/excel文件,文件资源管理器(文件夹)就卡死的问题