Как я могу передать коллекцию объектов для просмотра в моем MVC3? - PullRequest
0 голосов
/ 15 января 2012

У меня есть следующий метод действия, который возвращает коллекцию экземпляров 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 вариантом, но я бы предпочел не использовать ее, так как слышал, что это не очень хороший выбор.

Ответы [ 2 ]

5 голосов
/ 15 января 2012

Вы можете использовать коллекцию AdminDetail в качестве типа модели вашего представления, чтобы вы могли проходить по элементам:

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

или, используя шаблон отображения, вы можете избежать цикла:1006 *

и внутри соответствующего шаблона отображения, который будет автоматически отображаться для каждого элемента коллекции (~/Views/Shared/DisplayTemplates/AdminDetail.cshtml):

@model Storage.Models.AdminDetail
<div>@Html.DisplayFor(x => x.Title)</div>
...
1 голос
/ 15 января 2012

Вы можете установить список в качестве вашей модели - модель в MVC3 может быть чем угодно. Просто установите List в качестве модели представления.

В качестве альтернативы, используйте ViewBag (хотя я бы не советовал злоупотреблять им, поскольку вы теряете IntelliSense). ViewBag похож на динамически типизированный словарь, доступный как из View, так и из Controller. Вот пример:

Контроллер:

ViewBag.Color = "Blue";

Вид:

<h1> The color is <%: ViewBag.Color %> </h1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...