Sajeda Alatiyat Ответов: 1

Каково же решение этой ошибки


Server Error in '/' Application.
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 


Line 68: <!-- /SECTION -->
Line 69: <div class="row product-container">
Line 70:     @foreach (var item in Model.ListOfProducts)
Line 71:     {
Line 72:         <div class="col-md-3 col-sm-3 col-xs-6" style="margin-bottom:8px">


Что я уже пробовал:

@model metro1.Models.Home.HomeIndexViewModel
@using PagedList;
@using PagedList.Mvc;
@{
    ViewBag.Title = "Shop";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Shop</h2>



<div class="row product-container">
    @foreach (var item in Model.ListOfProducts)
    {
        <div class="col-md-3 col-sm-3 col-xs-6" style="margin-bottom: 8px">
            <div class="thumbnail product-item" style="height: 300px">

                

                <div class="caption">
                    <h5>@item.ProductName</h5>
                    <p>@item.price $.</p>
                    <p>
                        @if (item.Quantity > 0)
                        {
                            using (Html.BeginForm("AddToCart", "Home", new { productId = item.ProductId }, FormMethod.Post))
                            {
                                
                            }
                        </p><p>Available</p>
                    }
                    else
                    {
                        <p>Not Available</p>
                    }

                        <div class="product-item-badge">
                            @if (item.IsFeatured == true)
                            {
                                <p>New</p>

                            }
                            else
                            {
                                <p>Old</p>
                            }
                        </div>
                    </div>
                </div>
            </div>
        }


</div>
<div class="container">
    @Html.PagedListPager(Model.ListOfProducts, page => Url.Action("Index", new { page, search = Request.QueryString["search"] }), new PagedListRenderOptions() { Display = PagedListDisplayMode.IfNeeded, DisplayItemSliceAndTotal = true })
</div>

F-ES Sitecore

Либо модель равна нулю, либо модель.ListOfProducts имеет значение null. Невозможно сказать, почему из кода, который вы опубликовали. Используйте отладчик для пошагового выполнения действия, чтобы понять, почему вы не возвращаете никаких данных модели.

1 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

System.NullReferenceException означает, что экземпляр в вашем коде был null- Вы забыли выполнить задание. new на объект и передается значение по умолчанию в коде.

Существует несколько способов предотвращения этой ошибки, самый простой и рекомендуемый подход-это правильное создание экземпляров.

var obj = new Type();
Где именно вы получаете ошибку начинается с foreach цикл в вашем коде и идет полностью вниз. Из вашего вопроса я могу сказать, что, возможно, это ноль,
@foreach (var item in Model.ListOfProducts)
Вы можете решить эту проблему с помощью этого:
@if(Model.ListOfProducts != null) {
    foreach (...) { }
} else {
    <p>The product list is null. Check the controller where it is being passed.</p>
}
Но это не решает проблему, не так ли? Это просто предотвратит возникновение ошибки во время выполнения. Хорошее решение состоит в том, чтобы убедиться, что Model получает значение в ListOfProducts от контроллера. Вам нужно проверить, проходите ли вы null к View() вызов функции.

Вот несколько моих предыдущих ответов, которые обсуждают эту проблему и ее решение в различных контекстах:
Пустой ссылкой исключение[^]
Проблема с ошибкой "нулевая ссылка" при создании экземпляров класса[^]
как обрабатывать нулевые ссылки и исключения из привязки[^]


MadMyche

+5

Afzaal Ahmad Zeeshan

Спасибо.

Sajeda Alatiyat

спасибо