【问题标题】:How can I access "properties" of TempData in .NET MVC如何在 .NET MVC 中访问 TempData 的“属性”
【发布时间】: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


【解决方案1】:

正如我在评论中提到的,在您的 StudentApplicants 中将您的代码更改为:

var student = TempData["student"] as Student;

现在您可以使用student 变量,它将保存在NewStudentSchedule_Submit 中设置的所有临时数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多