如何将一组对象传递给MVC3中的视图?

Sam*_*tar 0 asp.net-mvc asp.net-mvc-3

我有以下操作方法,它返回AdminDetail实例的集合:

   public ActionResult DetailData()
    {
        var vm = _reference.Detail().ToList();
        return PartialView("~/Areas/Administration/Views/References/_DetailData.cshtml", vm);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的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; }
    }
Run Code Online (Sandbox Code Playgroud)

在我的剃须刀视图中,我应该为模型添加什么?如果我只是提出以下内容,那么它只适用于一个实例:

@model Storage.Models.AdminDetail

    @foreach (var detail in Model.AdminDetails)
    {
Run Code Online (Sandbox Code Playgroud)

如何使用我的模型将一组AdminDetails传递给视图?我不确定viewdata是否是一个选项,但我宁愿不使用它,因为我听说它不是一个很好的选择.

Dar*_*rov 5

您可以使用AdminDetail视图模型类型的集合,以便循环遍历元素:

@model IEnumerable<Storage.Models.AdminDetail>
@foreach (var detail in Model)
{
    <div>@detail.Title</div>
    ...
}
Run Code Online (Sandbox Code Playgroud)

或使用显示模板,您可以避免循环:

@model IEnumerable<Storage.Models.AdminDetail>
@Html.DisplayForModel()
Run Code Online (Sandbox Code Playgroud)

并在相应的显示模板内,将自动为collection(~/Views/Shared/DisplayTemplates/AdminDetail.cshtml)的每个元素呈现:

@model Storage.Models.AdminDetail
<div>@Html.DisplayFor(x => x.Title)</div>
...
Run Code Online (Sandbox Code Playgroud)