Страница индекса бритвы mvc3 с двумя частичными страницами с diff.модель страницы - PullRequest
0 голосов
/ 19 апреля 2011

мой индекс выглядит следующим образом с моделью страницы, которая принимает список объектов

@model List<MyProject.Domain.Object>

@Html.Partial("PickDatePartial") 
@Html.Partial("ObjectPartial", Model)

Моя проблема связана с первой частичной страницей, потому что эта частичная страница принимает не список, а один @model MyProject.Domain.Object

Как я могу добиться этого, в этой текущей ситуации индексная страница не может быть отображена, потому что она ожидает получения списка объектов.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Хорошо, одна быстрая и грязная вещь, которую вы могли бы сделать, это передать первый объект PickDatePartial

@Html.Partial("PickDatePartial", Model.First())

Это, однако, не очень чисто. Я бы рекомендовал создать модель представления с двумя свойствами: 1) весь список, 2) тот, который будет связан PickDatePartial:

public class IndexViewModel
{
    public List<MyProject.Domain.Object> MyList { get; set; }
    public MyProject.Domain.Object ObjectToBind { get; set; }
}

Тогда в вашем Index действии на вашем контроллере:

public ActionResult Index()
{
    var myList = // instantiate list here
    var viewModel = new IndexViewModel
    {
        MyList = myList,
        ObjectToBind = myList.First() // or whichever you need out of that list
    }

    return View(viewModel);
}

Вам, конечно, нужно изменить тип модели в представлении Index. Теперь Index выглядит так:

@model IndexViewModel

@Html.Partial("PickDatePartial", Model.ObjectToBind) 
@Html.Partial("ObjectPartial", Model.MyList)
1 голос
/ 19 апреля 2011

Если «PickDatePartial» ожидает один объект, и вы предоставляете ему список объектов, какой объект он должен использовать?

Вам решать, что делать.

Вы можете сказать ему использовать первый объект:

@if (Model.Count > 0) {
   @Html.Partial("PickDatePartial", Model[0])
}

или вы можете вызвать его для каждого объекта:

@foreach(var item in Model) {
   @Html.Partial("PickDatePartial", item)

}

Возможности безграничны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...