0

私は2つのテーブルを持っています。学生と学年。Grade には外部キー StudentId があるため、どの生徒がその Grade を取得したかがわかります。

アクション AddStudent があり、ビューには学生データ データをデータベースに挿入するフォームがあります。AddStudent アクションは PartialView を返します。その PartialView には、成績の新しいフォームがあります。

どういうわけか StudentId を取得する必要があります (AddStudent アクションにデータを挿入した後に取得する必要があります)。AddStudent アクションから Grades 部分ビューに StudentId を渡すにはどうすればよいですか? StudentId を使用して「成績」を挿入する必要があるため、どの学生の成績が意図されているかがわかります。

行動:

        [HttpPost]
    [ValidateAntiForgeryToken]
    public virtual ActionResult CreateStudent(Student student)
    {
        if (ModelState.IsValid)
        {
            db.Students.Add(student);
            db.SaveChanges();
            return PartialView(MVC.Student.Views._AddGrades); // do I have to pass student.Id here to partialView somehow?
        }

        return View(student);
    }

等級アクション:

        [HttpPost]
    [ValidateAntiForgeryToken]
    public virtual ActionResult CreateGrade(Grade grade, int studentId)
    {
        if (ModelState.IsValid)
        {
            grade.studentId = studentId; // how to get this from previous action to my partial view?
            db.Grades.Add(grade);
            db.SaveChanges();
            return PartialView(MVC.Grades.Views._UpdateTableOfGrades);
        }

        return View(grade);
    }

いくつかの例に本当に感謝します。

ありがとう!

4

3 に答える 3

0

コントローラーに Get CreateGrade アクションを追加し、次のように RedirectToAction を返す必要があると思います。

return RedirectToAction(MVC.Student.CreateGrade)

また、StudentId プロパティを含むモデルを作成する必要があります。

T4MVC を使用している場合は、次のことができます。

return RedirectToAction(MVC.Student.CreateGrade).AddRouteValue("studentid", student.Id);
于 2013-10-09T22:06:40.153 に答える
0

この猫の皮を剥ぐ方法はいくつかありますが、あなたが求めているのはそれだと思いますTempData。したがって、最初のコントローラーでは次のようになります。

 TempData["StudentId"] = studentId;

TempData次のリクエストが終了するまで続きます。より長く保持する必要がある場合は、を使用してViewDataください。

 ViewData["StudentId"] = studentId;
于 2013-10-09T21:56:20.020 に答える
0

Idを呼び出した後、プロパティが入力されますdb.SaveChanges()

int studentId = student.Id;

この値を部分ビューに渡すことができます。

于 2013-10-09T21:56:23.120 に答える