【发布时间】:2021-09-13 15:28:28
【问题描述】:
我在控制器的一个动作中引入了一个 Student 参数。我将此参数分配给 TempData["student"] 并保留它,以便我可以在同一控制器的另一个操作中使用它。现在 TempData["student"] 具有子属性,例如 FirstName、LastName、Email 等。但是由于编译器不知道这些属性,所以当我在其他操作中说类似 TempData["student"].FirstName 时,它会抛出预期的编译器错误。我在类级别启动了一个新的 Student 变量,但是由于每次我从视图调用操作时都会访问控制器,因此它会启动一个新变量并每次都重置值。所以我需要使用 TempData["student"] 访问这些属性。任何帮助将不胜感激。
我为 TempData["student"] 赋值的操作
[ActionName("NewStudentSchedule")]
[HttpPost]
public ActionResult NewStudentSchedule_Submit(Student student)
{
TempData["student"] = student;
TempData.Keep();
if (TempData.Count() == 0 || TempData == null)
ViewBag.Error = true;
else
ViewBag.Error = false;
return View("Close");
}
我尝试使用 TempData 值的方式和操作
[HttpPost]
public ActionResult StudentApplicants(List<StudentApplicant> studentApplicant)
{
TempData.Keep();
Models.Student newStudent = new Models.Student();
newStudent.FirstName = TempData["student"].FirstName;
newStudent.LastName = TempData["student"].LastName;
return View();
}
【问题讨论】:
-
在您的
StudentApplicants操作中,您可以简单地执行以下操作:var student = TempData["student"] as Student;。现在您可以使用student变量,它将保存在NewStudentSchedule_Submit操作中设置的所有临时数据 -
谢谢你的工作
-
很高兴!我会把它作为一个答案来帮助未来的读者
标签: c# asp.net .net asp.net-mvc model-view-controller