我有以下操作方法,它返回AdminDetail实例的集合:
public ActionResult DetailData()
{
var vm = _reference.Detail().ToList();
return PartialView("~/Areas/Administration/Views/References/_DetailData.cshtml", vm);
}
这是我的AdminDetail类:
namespace Storage.Models
{
public class AdminDetail
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Title { get; set; }
public string Status { get; set; }
public string Type { get; set; }
public string Level { get; set; }
public string Order { get; set; }
public int Row { get; set; }
}
在我的剃须刀视图中,我应该为模型添加什么?如果我只是提出以下内容,那么它只适用于一个实例:
@model Storage.Models.AdminDetail
@foreach (var detail in Model.AdminDetails)
{
如何使用我的模型将一个AdminDetails集合传递给视图?我不确定viewdata是否是一个选项,但我宁愿不使用它,因为我听说它不是一个很好的选择。
答案 0 :(得分:5)
您可以使用AdminDetail
的集合作为视图模型类型,以便循环遍历元素:
@model IEnumerable<Storage.Models.AdminDetail>
@foreach (var detail in Model)
{
<div>@detail.Title</div>
...
}
或使用显示模板可以避免循环:
@model IEnumerable<Storage.Models.AdminDetail>
@Html.DisplayForModel()
并在相应的显示模板内,将自动为集合的每个元素(~/Views/Shared/DisplayTemplates/AdminDetail.cshtml
)呈现:
@model Storage.Models.AdminDetail
<div>@Html.DisplayFor(x => x.Title)</div>
...
答案 1 :(得分:1)
您可以将列表设置为模型 - MVC3中的模型可以是您想要的任何模型。只需将List设置为视图的模型。
或者,使用ViewBag(虽然我不建议在松开IntelliSense时滥用它)。 ViewBag就像一个动态类型的字典,可以从View和Controller中获得。 这是一个例子:
控制器:
ViewBag.Color = "Blue";
查看:
<h1> The color is <%: ViewBag.Color %> </h1>