如何将值从一个视图传递到另一个视图

本文关键字:视图 一个 另一个 | 更新日期: 2023-09-27 18:34:22

我对使用 MVC 控制器 ASP.NET 非常陌生...这就是我的场景。正在开发一个在线录取系统,学生来填写他们所需的记录以处理入学。我有不同的班级,其中包含有关学生的特定信息。我的学生班是:

public class Student
{
    public int ID { get; set; }
    [Required]
    public string NAME { get; set; }
    [Required]
    public string FIRSTNAME { get; set; }
    [Required]
    public string LASTNAME { get; set; }
    public virtual ICollection<Enrollment> Enrollments { get; set; }
}

我有另一个名为"注册"的课程,用户在其中输入所有课程以及成绩

public class Enrollment
{
    public int EnrollmentID { get; set; }
    public int CourseID { get; set; }
    public int StudentID { get; set; }
    public Grade Grade { get; set; }
    public virtual Student Student
    {
        get;
        set;
    }
    public virtual Course Course { get; set; }
}
public enum Grade
{
    A,B,C,D,E,F
}
}

和不同的更多类。我有一个名为注册的控制器,我将在其中为每个类创建视图。

所以在我的第一个视图中,在保存记录后,它需要所有学生的详细信息。当用户单击下一步时,我想将学生类的 ID 号传递到我的下一个视图,即注册视图,并将记录与学生班级的 ID 号一起保存,该 ID 号在注册类和数据库中充当外键。

一直在努力 2 实现这一点但没有成功。我希望有一个简单的例子来演示如何实现这一目标,因为我最近开始使用 ASP.NET 时不太擅长使用 mvc 框架。

如何将值从一个视图传递到另一个视图

首先让我们明确这是MVC而不是Web表单。在 MVC 中,流程是这样的

   View ----> Controller----->Model    then back to controller and so on in usual cases.

现在您可能想做的是将一个值(此处为 ID(从第一个视图中的表单传递到另一个视图,这可能应该像这样完成。

例如,存储 ID 的文本框名为"tb1",然后在控制器中编写以下代码

    int id  = (Request.Form["tb1"]).toString();
    //now we'll store this id in a ViewState varibale like so
    ViewData["id"] = id;
    //don't worry about the data type of ViewData["id"], it would adapt automatically 

然后,在正确的重定向之后,即从控制器返回第二个视图,只需在您需要的任何位置访问此 ViewState 变量,如下所示:

   @ViewData["id"]

请注意,这是 Razor 语法,您的视图需要位于 .cshtml 页面中,而不是.aspx页面中

您可以使用

ViewBag.MyProp = "XYZ";在我们看来,您可以将其检索为:

var name = "@ViewBag.MyProp">