Asp .Net MVC, почему мой viewbag всегда не нулевой? - PullRequest
0 голосов
/ 13 июня 2018

Я назначил некоторые данные из таблицы базы данных в мою viewbag в контроллере.Так как нет содержащих данных, моя viewbag возвращает true.Почему это произошло?

Контроллер

//bear in mind that there is no status == 1, all were status == 0
Viewbag.itemlist = db.Furnitures.Where(x => x.Status == 1).ToList(); 

Просмотр

@if(Viewbag.itemlist != null)
{
   //The string is displayed even tho it does not contain any data
   <p>I appear</p>
}

1 Ответ

0 голосов
/ 13 июня 2018

Если вы хотите проверить, является ли список пустым, попробуйте следующее:

@if( ((List<Furnitures>) Viewbag.itemlist).Count > 0)
{
    //The string is displayed even tho it does not contain any data
    <p>I appear</p>
}

или

@if( ((List<Furnitures>) Viewbag.itemlist).Any())
{
    //The string is displayed even tho it does not contain any data
    <p>I appear</p>
}

Обновление:

Как указано @learnprogrammingВторое решение не работает..Any () не работает с List, он работает с IEnumerable.

Чтобы это работало, вам нужно добавить

@using System.Linq

в начало вашего файла представления.Спасибо @ColinM за подсказку.

Обновление 2

Еще один совет от @Colin.MVC полностью поддерживает привязку модели между контроллерами и представлениями.

Лучше передавать данные с привязкой модели вместо ViewBag.В вашем ActionResult вы должны сделать это:

var furnituresList = db.Furnitures.Where(x => x.Status == 1).ToList();
return View(furnituresList);

Затем, по вашему мнению, поместите это сверху (после директив @using):

@model List<Furnitures>

И затем проверьте это:

@if(Model.Count > 0)
{
    //The string is displayed even tho it does not contain any data
    <p>I appear</p>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...