.net中mvc问卷制作
生活随笔
收集整理的這篇文章主要介紹了
.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问卷制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 相思,思乡
- 下一篇: 10.2 动态规划算法套路及空间优化 —