尝试渲染集合并且它无声地输出任何内容。我在SO上搜索类似的问题,没有发现任何描述我的问题。
我绝对肯定收藏品不是空的。在控制器中进行调试,视图显示我设置的类型集合中的项目。
我尝试过这些方法,但都没有做任何事情。
@foreach (var item in Model.Messages)
{
@Html.DisplayFor(msg => item.MessageBody)
}
@foreach (var item in Model.Messages)
{
@Html.Display(item.MessageBody)
}
这会将值呈现为预期
@foreach (var item in Model.Messages)
{
@item.MessageBody
}
这里有什么问题?
答案 0 :(得分:0)
很奇怪,对我来说非常好:
型号:
public class MyViewModel
{
public IEnumerable<Message> Messages { get; set; }
}
public class Message
{
public string MessageBody { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
Messages = Enumerable.Range(1, 10).Select(x => new Message
{
MessageBody = "message " + x
})
});
}
}
查看:
@model MyViewModel
@foreach (var item in Model.Messages)
{
<div>@Html.DisplayFor(msg => item.MessageBody)</div>
}
我怀疑你的Messages
集合是空的还是什么。想不出另一个理性的解释,因为我无法重现你的问题,如我的回答所示。
作为旁注,我会使用显示模板来避免编写任何循环。因此,您的Index.cshtml
视图变为:
@model MyViewModel
@Html.DisplayFor(x => x.Messages)
然后你编写一个相应的显示模板(~/Views/Shared/DisplayTemplates/Message.cshtml
),它会自动为你视图模型的Messages
集合的每个项目呈现:
@model Message
<div>@Html.DisplayFor(x => x.MessageBody)</div>