【发布时间】:2015-10-02 12:15:39
【问题描述】:
我想知道是否可以通过 ViewBag 传递模型对象。我尝试了以下代码,但不知何故在我的视图中,它只是显示的模型的路径。
控制器:
public ActionResult Tempo()
{
DateTime date1 = new DateTime(1990, 1, 1);
Employee emp = new Employee(3, "fara", "hass", date1, 56.6m, 0);
ViewBag.EmployeeId = emp.EmployeeID;
ViewBag.Fname = emp.Fname;
ViewBag.Employee = emp;
}
查看:
@{
ViewBag.Title = "Tempo";
}
@model LayoutProject.Models.Employee
<h2>Tempo</h2>
<div>
<h4>ViewBag</h4>
<br />
EmployeeID: @ViewBag.EmployeeId
<br />
Fname: @ViewBag.Fname
<br />
Employee : @ViewBag.Employee
</div>
正确显示了 Fname 和 EmployeeId,但未正确显示 Employee 本身。我是否在这里遗漏了什么,或者根本无法通过 ViewBag 传递模型?
【问题讨论】:
-
您正在使用
ViewBag传递模型,但@ViewBag.Employee显示.ToString()值Employee无需包含ViewBag.EmployeeId = emp.EmployeeID;和ViewBag.Fname = emp.Fname;- 您可以使用@ 987654329@ 和视图中 -EmployeeID: @((Employee)ViewBag.emp).EmployeeId等。但是为什么要这样做而不是将模型传递给视图 -return View(emp)? -
@tabby - 您希望在 Employee 字段中看到什么?
-
@Stephen:所以我不能使用 '@ViewBag.emp' 来显示整个模型及其属性?
-
@Dangerous:我认为 ViewBag.emp 会显示整个模型。这可能吗?
-
@tabby - 我希望您希望将模型显示为字符串,但您需要指定该字符串的格式。您应该覆盖员工对象的 ToString() 方法或在包含信息的视图模型中创建一个字段。
标签: asp.net-mvc-3 viewbag