MVC: Как я могу передать список из одного представления в другое? - PullRequest
0 голосов
/ 10 января 2010

У меня есть некоторые данные, которые я хотел бы передать дочернему частичному представлению. Часть этих данных представляет собой список дат, которые я хотел бы отобразить в частичном представлении. Я почти уверен, что не могу передать IEnumerable из одного представления в другое (когда я пытаюсь использовать list, null в контроллере). Предполагая, что это так, есть ли хорошая работа вокруг?

Я думал о том, чтобы просто объединить значения в строку и затем просто проанализировать эту строку в контроллере. Это кажется немного хакерским, но я думаю, что это сработает. Есть ли проблема с этим? Есть ли лучший способ?

Просто стыдно снова получить данные, которые я получил в родительском представлении. Я надеюсь, что есть другой способ сделать это.

Обновление: Это модель для частичного просмотра:

public class SiteVisitDetailModel
{
    public String URL
    {
        get;
        set;
    }

    public List<DateTime> Dates
    {
        get;
        set;
    }
}

И это код из родительского представления для добавления частичного представления:

<% Html.Telerik().PanelBar().Name("PanelBar").HtmlAttributes(new { style = "padding-left: 0em;" }).Items(items =>
{
    foreach (var item in Model.Visits)
    {
        SiteVisitDetailModel model = new SiteVisitDetailModel();
        model.URL = item.Key;
        model.Dates = (from siteVisit in item
                             select siteVisit.Time).ToList();

        items.Add()
            .Text(item.Key.ToString() + " " + item.Count().ToString() + " visits")
            .LoadContentFrom("SiteViewDetail", "Report", model);        

    }
}).Render();

В методе действия SiteVisitDetail правильно задан model.URL, а model.Dates имеет значение null.

Ответы [ 2 ]

4 голосов
/ 10 января 2010

Если я правильно понял вашу проблему ...

Если ваш частичный вид может быть строго типизирован, его моделью может быть список, и вы можете сделать:

<%Html.RenderPartial("PartialView",myList);%>

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

1 голос
/ 11 января 2010

Проверьте этот пост о том, как обмениваться моделями.

По сути, вы, вероятно, передадите модель представлению, содержащему ваш список. затем вы можете расширить его позже.

Несколько моделей отправлено в один экземпляр представления

...