@darkmayers

Как вывести List во View, если лист пока нулевой?

Добрый день!

Осваиваю asp.net mvc, совсем начинающий разработчик.
Задача у меня такая: Из View получаю какой то string, ижу соответствие по БД и вывожу результат ниже.
Вот код контроллера:
[HttpPost]
        public ActionResult Index(string surname)
        {
            var allDriver = db.Table.Where(a => a.surname.Contains(surname)).ToList();
            if (allDriver.Count != 0)
            {
                ViewBag.Drivers = allDriver;
                return View();
            }
            return View();
        }

А вот код View
<div>
    @using (Html.BeginForm())
    {
        @Html.TextBoxFor(x=>x.surname);
        <input type="submit" value="Найти"/>
    }

    @foreach (var x in @ViewBag.Drivers)
    {
        <p>@x</p>
    }

</div>

Сейчас приложение падает с ошибкой, что ссылка на объект не указывает на экземпляр объекта.
Я так понимаю, что это из за того, что пока в этом @ViewBag.Drivers ничего нет, т.к. мы еще ничего не вводили в строку и не искали.
Подскажите, как это по правильному делается? Может быть вообще в корне неправильный подход у меня? Заранее спасибо
  • Вопрос задан
  • 357 просмотров
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
1) Осваивайте понятие Model. Создайте класс одним из полей которого будет ваш Drivers. Создайте строго типизированный View для этого класса.(Заодно научитесь асинхронно грузить этот список)
2) Более простой способ "в лоб"
@if(ViewBag.Drivers!=null)
{foreach (var x in ViewBag.Drivers)
    {
        <p>@x</p>
    }
}


Вообще я вам рекомендую не приучаться пользоваться ViewBag, а больше осваивать строготипизированные View, Partial View и прочее. ViewBag подходит для переноса коротких сообщений. Таскать объекты для отображения в интерфейсе - плохая практика вынуждающая изобретать костыли, о которых вы собственно и задали вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы