背景情報:質問を作成するためのフォームとその回答があります。 Questionクラスには、回答のリストであるプロパティが含まれています。このフォームのビューモデルを作成しました。フォーム上に「選択された回答を削除」ボタンがあり、削除する回答を選択するドロップダウンリストがあります。フォームビューモデルをコントロールにポストバックします。ユーザーが特定のボタンを押した場合は、質問からこの回答を削除し、モデルを作成ページに返します。これは私がのcontrolerアクションの内側に置くものです:私はquestionForm.Questionことを確認コードをステップとしてビューモデル内のリストの正しい要素を削除できません
はif (questionForm.DeleteSelectedAnswerButton != null)
{
questionForm.Question.PossibleAnswers.RemoveAt(questionForm.AnswerNoToDelete);
questionForm.DeleteSelectedAnswerButton = null;
questionForm.AnswerNoToDelete = 0;
return View(questionForm);
}
さて、私は4の外に答え2を削除しようと、AnswerNoToDeleteは、1に等しいです。 PossibleAnswersは2番目の答えが正しくないリストですが、私の見解に戻ると、最後の答えは常に欠落しています(テキストボックスにあるテキストから判断して)。これがなぜ起こっているのでしょうか?私のビューには、各応答テキストのテキストボックスを描画するためのforループ(可能な回答の長さより0から短い)があります。
このようにモデルを構築することで、私は根本的に何かをやっていますか?可能な回答が1つ上のレベルだった場合、それは良いでしょうか:questionForm.PossibleAnswers?
これは私の問題を解決します。実際には、Answerクラスにはかなりのプロパティがありますので、 'ModelState'からもっと多くのエントリを削除する必要があります。私は 'ModelState.Clear()'を実行しました。私はバリデーションエラーを取り除いたので、一つの石で2羽の鳥を殺しました。ユーザーが「保存」ボタンを押してモデルが有効でない場合にのみ、エラーを表示したい。正しい方向を指してくれてありがとう。 – Panos
ありがとう、テンプレートベースのコレクションエディタを作成していて、コレクションの途中から値を削除しようとすると奇妙なエラーが発生しました。これで解決しました。 ...ああ、ところで、ありがとう。 –