0
私はMVCアプリケーションを作成しています。 1つのビューにはフォームが含まれています。それを埋めると、フォームが検証され、モデルが有効な場合は別のウィンドウに移動する必要がありますが、そうでない場合は何も起こりませんが、データの一部が失われているようです。私のコントローラ:MVC null例外
public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model)
{
ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2();
model.groups = entities.Groups.ToList();
model.users = entities.Users.ToList();
int id = model.subject_id;
var subj = entities.Subjects
.Where(b => b.class_id == id)
.FirstOrDefault();
model.subject_name = subj.name;
if (ModelState.IsValid)
{
}
else
{
if (subj != null)
{
model.subject_name = subj.name;
}
model.subject_id = model.subject_id;
model.groups = entities.Groups.ToList();
model.users = entities.Users.ToList();
return View(model);
}
return View(model);
}
、明らかsubject_id
とqty
は偽の検証の後にNULLです。どうして?
デバッガでそれを実行してください。私の推測は、 'model.subject_name = subj.name;'を実行したときに 'subj'がnullになる可能性があるためです。つまり、コードをきれいにするためにいくつかの方法があります(例えば 'model.subject_id = model.subject_id'?) –
アクションの引数として渡されたコントローラ内のデータを変更する場合は、 ModelState.Clear()が必要ですこれはバインディングの問題です。 – kblau
あなたが何を意味しているのか理解できません。また、偽の検証の後、subject_idとqtyがnullであるようです。 – Steve