如何从 HTML 访问用 C# 创建的对象的值

本文关键字:创建 对象 HTML 访问 | 更新日期: 2023-09-27 18:31:13

在我的MVC控制器中,我创建了一个"对象",我将其简化为"学生"。我正在使用ViewBag将其传递给我的视图。

在我的控制器中,我有:

ViewBag.Student = new { 
    Id = "52", 
    Value = JsonConvert.SerializeObject(new
    {
         StudentName = oneStudent.Name,
         Age = oneStudent.Age,
         FavoriteColor = oneStudent.Color,
         Height = oneStudent.Height
    }),
    Text = oneStudent.Name + " --- " + oneStudent.Age,
};

我开始调用ViewBag,使用

@{
    var student = ViewBag.Student;
}

我想使用 span(或类似的东西)来显示数据。我的尝试是在 html 代码中使用一些类似于"@Student.Value"的代码,但这不起作用。

任何帮助将不胜感激。谢谢。

如何从 HTML 访问用 C# 创建的对象的值

您正在为 Viewbag 设置匿名对象。您无法在剃须刀视图中读取其属性。

您应该做的是创建一个视图模型来表示要发送的数据,创建该对象,初始化属性值并发送到视图。此外,使用 ViewBag 在操作方法和视图之间传输数据也不是一个好主意。由于我们将使用视图模型,因此我们可以将视图强类型化为视图模型,并使用它来传输数据。

public class StudentDetailVm
{
    public int Id { set; get; }
    public StudentVm Value { set; get; }   
}
public class StudentVm
{
    public string StudentName { set; get; }
    public int Age { set; get; }
    public int Height {set;get;}
}

并在您的 GET 操作中

public ActionResult Details(int id)
{
   var vm = new StudentDetailVm { Id = id,
                                 Value = new StudentVm { 
                                                        StudentName = "Scott", 
                                                        Age = 23}};
  return View(vm);
}

在您的视图中,该视图已强类型化为我们的视图模型

@model StudentDetailVm 
<h2>@Model.Id</h2>
<h3>@Model.Value.StudentName</h3>