回答記録をページに表示する方法


今日ナ姉さんとITOをする过程の中でしたのは2回登录するページについてで、业务の流れは大体このようです:抽题;質問記録を抽出し、質問記録を自動的にページに記入します.

質問:


ITOのフロントページはダイナミックにロードされているため、コードは以下の通りです.
List<duoxuantiRecordViewModel> queryduoxuanti = IQuerySqlServiceBll.QueryDuoxuantiRecord(studentID)<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">      </span>
  //     ,             
for (int i = 0; i < queryduoxuanti.Count; i++)
            {
                int j = i + 1;          
                
                string questioncontent = queryduoxuanti[i].QuestionContent;
                string answer1 = queryduoxuanti[i].Answer1;
                string answer2 = queryduoxuanti[i].Answer2;
                string answer3 = queryduoxuanti[i].Answer3;
                string answer4 = queryduoxuanti[i].Answer4;


		//         examanwer    
                string examanswer = queryduoxuanti[i].ExamAnswer;
                               
               	//             
                StudentExamQuestion.Append("<h2>" + j + "、" + questioncontent + "</h2>");
                StudentExamQuestion.Append("\r
"); StudentExamQuestion.Append("<input name='sex' style='float:left;'/><h3> A:" + answer1 + "</h3>"); StudentExamQuestion.Append("<input name='sex' style='float:left;'/><h3> B:" + answer2 + "</h3>"); StudentExamQuestion.Append("<input name='sex' style='float:left;'/><h3> C:" + answer3 + "</h3>"); StudentExamQuestion.Append("<input name='sex' style='float:left;'/><h3> D:" + answer4 + "</h3>"); }

だから私たちは直接viewページに行って自分の解答記録をページに修正することはできません.

ソリューション:


だから、三元表現を使いました.

1.三元表現とは何ですか。


3 Dオペレータペアを使用しますか?:3つのオペランドがあるため、このオペレータは3つのオペランドに属しますが、オペレータの1つに属し、最終的には値も生成されます.式は次の形式で表されます.
boolean-exp ? value0 : value1
式boolean-exp?value 0:value 1で、「ブール式」の結果がtrueの場合、「value 0」が計算され、この計算結果はオペレータが最終的に生成した値です.「ブール式」の結果がfalseの場合、「value 1」が計算され、オペレータが最終的に生成した値になります.
もちろん、通常のif-else文(後述)に置き換えることもできますが、三元オペレータはより簡潔です.それは簡潔な言語であり、三元オペレータの導入の多くはこのような効率的なプログラミングを体現するためであるが、頻繁に使用するつもりなら、まず多くの考えをしなければならない.読みやすさの悪いコードが発生しやすいからだ.
この条件オペレータの使用目的は、その「副作用」のために、生成された値を演算するためにある場合があります.一般的に、if-elseとは異なる点で、その演算の結果値が必要です.次に例を示します.
static int ternary(int i) {
	return i < 10 ? i * 100 : i * 10;
	}

上のコードは,三元オペレータを用いないよりも非常にコンパクトであることがわかる.
static int alternative(int i) {
	if (i < 10)
	return i * 100;
	else
	return i * 10;
	}

2つ目の形式は理解しやすく、あまり入力する必要はありません.したがって、三元オペレータを使用する場合は、必ずよく考えてください.

2.三元表現を使用した後のコード

  List<duoxuantiRecordViewModel> queryduoxuanti = IQuerySqlServiceBll.QueryDuoxuantiRecord(studentID);
            for (int i = 0; i < queryduoxuanti.Count; i++)
            {
                int j = i + 1;          
                
                string questioncontent = queryduoxuanti[i].QuestionContent;
                string answer1 = queryduoxuanti[i].Answer1;
                string answer2 = queryduoxuanti[i].Answer2;
                string answer3 = queryduoxuanti[i].Answer3;
                string answer4 = queryduoxuanti[i].Answer4;


                string examanswer = queryduoxuanti[i].ExamAnswer;
                               
               //       :(examanswer.Contains ("A" )? "checked" : " ")
                StudentExamQuestion.Append("<h2>" + j + "、" + questioncontent + "</h2>");
                StudentExamQuestion.Append("\r
"); StudentExamQuestion.Append("<input " + (examanswer.Contains ("A" )? "checked" : " ") + " type='checkbox' name='sex' style='float:left;'/><h3> A:" + answer1 + "</h3>"); StudentExamQuestion.Append("<input " + (examanswer.Contains("B") ? "checked" : " ") + " type='checkbox' name='sex' style='float:left;'/><h3> B:" + answer2 + "</h3>"); StudentExamQuestion.Append("<input " + (examanswer.Contains("C") ? "checked" : " ") + " type='checkbox' name='sex' style='float:left;'/><h3> C:" + answer3 + "</h3>"); StudentExamQuestion.Append("<input " + (examanswer.Contains("D") ? "checked" : " ") + " type='checkbox' name='sex' style='float:left;'/><h3> D:" + answer4 + "</h3>"); }

まとめ:


私とナ姉は当時、ある論理的な方法をたくさん話していたが、朝陽さんに聞いて、三元表現を教えてくれて、このように問題を解決できることを知った.多くの时、自分が学んだのはまだ足りないと思っているので、私は知識を補充して、ネットをよく調べなければならないと思います.