Распаковка нескольких результатов ViewData - PullRequest
0 голосов
/ 01 июня 2011

Итак, я хочу отобразить результаты нескольких запросов с одного контроллера.

Я имею в виду метод контроллера, подобный этому:

public ActionResult Index() {
            string tmp_username = Membership.GetUser().ToString();
            ViewData["lemons"] = lemondb.lemon.Where(p => p.user == tmp_username).ToList();
            ViewData["sugar" ] = lemondb.sugar.Where( p => p.user == tmp_username ).ToList();
            return View();
}

И вид, похожий на этот:

    @foreach (var action in (List)ViewData["lemons"]) {
...
            @Html.DisplayFor( action.amount )
...
            @Html.DisplayFor( action.acidity )
    @foreach (var action in (List)ViewData["sugar"]) {
...
            @Html.DisplayFor( action.amount )
...
            @Html.DisplayFor( action.sweetness)

Но я получаю ошибку в строках 'foreach', которая говорит что-то вроде:

CS0305: Использование универсального типа 'System.Collections.Generic.List' требует аргументов 1 типа

Какой аргумент я упускаю?

1 Ответ

2 голосов
/ 01 июня 2011

Я думаю, что это простая проблема C #. Вы должны привести объект из ViewData к List<T>, где вы должны заменить T типом элемента вашего списка. Проверьте тип свойства lemondb.lemon, чтобы узнать тип вашего элемента.

Если тип LemonTrader.Models.Message, попробуйте:

@foreach (var action in (List<LemonTrader.Models.Message>)ViewData["lemons"]) 
...