【发布时间】:2014-08-25 15:21:40
【问题描述】:
在一个人的Details 视图中,我还想显示DbContext 中的其他对象,确切地说是表Survey 的每条记录。所以我将它们插入ViewBag
人的控制器动作:
[HttpPost]
public ActionResult _Survey1(int id) {
System.Diagnostics.Debug.WriteLine("PASSED ID: " + id);
Person person = db.Persons.Find(id);
ViewBag.Surveys = db.Surveys.ToList();//HERE I insert Surveys to ViewBag
return PartialView(person);
}
并尝试在 View 中迭代它们:
@model WebApplication2.Models.Person
<hr />
<h2>Survey</h2>
<input type="button" id="Coll" value="Collapse" onclick="javascript:CollapseDiv()" />
<p>
@Html.DisplayFor(x => ViewBag.Surveys.Count)
</p>
@foreach (var survey in ViewBag.Surveys) {
<p>
@using (Html.BeginForm()) {
<text>ANK</text>
@Html.DisplayFor(x => survey.Questions.Count)
@Html.EditorFor(x => survey.Questions)
<input type="submit" />
}
</p>
}
<hr />
问题是我得到了:
问题:正如 tschmit007 建议的那样,如何定义可以接受 Person 和 `IEnumerable 并将数据传递给它的模型?
【问题讨论】:
-
@Html.DisplayFor(x => ViewBag.Surveys.Count)期望您使用模型的一部分,您希望它生成什么?填充了计数的字段? -
@siva.k 我想在表
Survey中显示行数。如果我在控制器中,我会写db.Surveys.Count而不是ViewBag.Surveys.Count。 -
编辑你的模型:添加一个
IEnumerable<Survey> Surveys到它;保留强类型视图。 -
@tschmit007 如何在模型中添加另一个字段?你能告诉我视图中的模型应该是什么样子以及如何传递这个额外的控制器吗?
-
你编辑
WebApplication2\Models\Person.cs文件。添加属性,然后在控制器级别填充它。那就是您按照 CodeCaster 的建议创建一个 ViewModel。
标签: .net asp.net-mvc entity-framework razor viewbag