Asp.Net MVC - 将上次创建的 ID 从操作传递到部分视图
本文关键字:操作 视图 ID MVC Net 创建 Asp | 更新日期: 2023-09-27 18:34:35
我有两个表。学生和年级。Grade有一个外键StudentId,所以我知道哪个学生得到了那个Grade。
我有一个操作 AddStudent,视图有一个表单,我将学生数据数据插入数据库。AddStudent 操作返回 PartView。在那个部分视图中,我有新的成绩表格。
我需要以某种方式获取学生ID(在AddStudent操作中插入数据后,我应该以某种方式获得(。如何将学生 ID 从添加学生操作传递到成绩部分视图?因为我需要在 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);
}
我真的很感谢一些例子。
谢谢!
有几种方法可以剥掉这只猫的皮,但我认为TempData
就是你所追求的。因此,在您的第一个控制器中,您将拥有以下内容:
TempData["StudentId"] = studentId;
TempData
将持续到下一个请求结束。如果需要它保留更长时间,请使用 ViewData
。
ViewData["StudentId"] = studentId;
调用 db.SaveChanges()
后将填充 Id
属性:
int studentId = student.Id;
可以将此值传递给分部视图。
我认为您应该在控制器上添加一个Get CreateGrade操作并返回如下所示的RedirectToAction:
return RedirectToAction(MVC.Student.CreateGrade)
还需要为将包含 StudentId 属性的创建创建创建模型。
如果您使用T4MVC,则可以这样做:
return RedirectToAction(MVC.Student.CreateGrade).AddRouteValue("studentid", student.Id);