【问题标题】:how to pass values from one view to another view如何将值从一个视图传递到另一个视图
【发布时间】:2014-12-17 01:57:23
【问题描述】:

我对使用 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; }
}

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

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
}
}

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

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

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

【问题讨论】:

  • 你或许可以在这篇文章中找到答案:stackoverflow.com/questions/17896014/…
  • @alexbell 不是我要找的东西。无论如何谢谢
  • 不客气。此外,与 ASP.NET 相关,页面之间数据交换的标准机制是使用 Cookie 或会话变量。这可能会有所帮助。最好的问候,
  • 你想要这个值在视图或控制器中?
  • @ mairaj,我想要视图中的值,我的所有表单都使用相同的控制器。所以当用户填写第一个表单并单击保存时,当用户移动到另一个表单旁边时,应将用户的 ID 号传递给注册视图,以便我可以将用户注册详细信息与用户 ID 一起保存

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

首先让我们明确这是 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 页面中

【讨论】:

    【解决方案2】:

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

    var name = "@ViewBag.MyProp"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多