これは私の心を吹き飛ばしています。次のプロパティを持つこのクラスがあります。
public IEnumerable<QuestionModel> Questions { get; set; }
public int TotalQuestions
{
get
{
return Questions.Count();
}
}
public int TotalCorrect
{
get
{
return Questions.Count( x => x.Correct );
}
}
public int Score
{
get
{
return ( TotalCorrect / TotalQuestions ) * 100;
}
}
コントローラーでモデルを作成する方法は次のとおりです。
var model = new QuizModel
{
Questions = new List<QuestionModel>
{
new QuestionModel
{
Correct = true
},
new QuestionModel
{
Correct = false
}
}
};
TotalQuestions は 2 です。TotalCorrect は 1 です。しかし、Score は常に 0 です。
他のプロパティが設定される前にスコアが設定されているのではないかと思ったので、これを試しました:
public int Score()
{
return ( TotalCorrect / TotalQuestions ) * 100;
}
ビューで Score() を呼び出すまでに、他のプロパティが確実に設定されるため、これが機能すると考えました。しかし、それは0を返すだけです。
また、IEnumerable を IList に変更してみました。そこには運がありません。