如何从 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"的代码,但这不起作用。
任何帮助将不胜感激。谢谢。
您正在为 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>