У меня есть страница, на которой пользователи могут вводить информацию о состоянии, а затем список других пользователей возвращается в состояние. Я использую цикл foreach
.MVC 3 принимает null foreach в viewModel
В некоторых штатах есть 0 пользователей, что приводит меня к ошибке: Ссылка на объект не установлена в экземпляр объекта. Как я могу пройти мимо этой ошибки? Определенная модель, которую я использую, называется Profiles.
Модель:
public class homepage
{
public List<profile> profile { get; set; }
public PagedList.IPagedList<Article> article { get; set; }
}
Контроллер:
public ActionResult Index()
{
HttpCookie mypreference = Request.Cookies["cook"];
if (mypreference == null)
{
ViewData["mypreference"] = "Enter your zipcode above to get more detailed information";
var tyi = (from s in db.profiles.OrderByDescending(s => s.profileID).Take(5) select s).ToList();
}
else
{
ViewData["mypreference"] = mypreference["name"];
string se = (string)ViewData["mypreference"];
var tyi = (from s in db.profiles.OrderByDescending(s => s.profileID).Take(5) where se==s.state select s).ToList();
}
return View();
}
The View:
@if (Model.profile != null)
{
foreach (var item in Model.profile)
{
@item.city
}
}
Когда я получаю ссылку на объект не указывает на экземпляр объекта ошибка, линия @if (Model.profile != null)
подсвечена, поэтому я попробовал для этого:
public List<profile>? profile { get; set; }
Но это не сработало. Любые идеи о том, как принять пустую модель в foreach или просто пропустить код во время выполнения?
Цикл foreach не должен вылетать, если список пуст; он должен просто петли 0 раз. Это скорее похоже на то, что сама модель равна null, учитывая ошибку и код нечетного контроллера. –