3

皆さんに質問があります。複数の回答を含む演習を作成できるアプリケーションをプログラミングしています。数日前に質問しましたが、現時点では完全に機能しています。

jqueryを使用してリストにデータを渡す、Entityを含むAsp.net MVC。動作しません

ソースはもう同じではありません。について一つだけ質問がありmodelstate.isvalidます。

例を挙げましょう。ExerciseModelリストの回答があります。jQueryを使用してその場で新しい回答を作成し、EditorTemplates完璧に機能します。唯一のことは、検証が機能しないことです。検証のためにメソッドに追加modelstate.isvalidしたいと思います。httpPost

質問は、新しい回答の編集/作成に関するものです

public ActionResult EditQuestion(int id)
{
    ExerciseModel exercisemodel = db.Exercise.Find(id);
    if (exercisemodel == null)
    {
        return HttpNotFound();
    }
    exercisemodel.Answers = GetAnswers(id);
    ViewBag.CourseId = new SelectList(db.Course, "CourseId", "CourseName", 
                                 exercisemodel.CourseId);
    return View(exercisemodel);
}


[HttpPost]
public ActionResult EditQuestion(ExerciseModel exercisemodel)
{
    foreach (var answer in exercisemodel.Answers)
    {
        db.Entry(answer).State = answer.AnswerId == 0 ?
                        EntityState.Added :
                        EntityState.Modified;
    }
    db.SaveChanges();
    return RedirectToAction("Index");
}

この理由は、新しい回答を作成できると同時に、既存の回答を編集して の回答リストに追加できるためExerciseModelです。だから、ExerciseModel新しい答えを作るときの私の変化。modelstate.isvalidそれが決して真実ではない理由です。

どうすればこれを機能させることができますか?

4

1 に答える 1

1

とった !返信ありがとうございます。奇妙ですが、機能します..私はすでに隠しIDを持っていました. テーブル行がわずかしかないパーシャルがあります。これは、jQuery を使用して既存のページに新しい回答を追加するためのものです。

私は持っていました。

    <input type="hidden" id="Answers_@(Model.AnswerId)__Id" class="iHidden"  name='Answers[@Model.AnswerId].AnswerId' />

答えを含む新しい行を作成するためです。今、私はそれを交換しました。

    @Html.HiddenFor(x=>x.AnswerId, new { @class = "iHidden" })

そして、それは今動作します。理由はわかりませんが、かみそりは仕事をします。

于 2013-04-04T13:16:02.887 に答える