ahmed_sa Ответов: 1

При использовании действие изменить результат, чтобы сохранить вам объект error ссылка имеет значение null


проблема
я получаю ошибку при редактировании результата действия при сохранении данных с помощью asp.net ядро 2.1 ?
ошибка на линии
foreach (var Footer in Header.SalesFooters)

в разделе продажи нижний колонтитул равен нулю
почему и как устранить ошибку ?
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=WebTabCore
StackTrace:
at WebTabCore.Controllers.SalesOrderController.Edit(SalesHeader Header) in D:\TABWebCore\WebTabCore\WebTabCore\Controllers\SalesOrderController.cs:line 72
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()

so how to solve this problem please ?


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

<table class="table">
                <thead>
                    <tr>
                        <th>
                            @Html.DisplayNameFor(model => model.SalesFooters.FirstOrDefault().SalesOrderNo)
                        </th>
                        <th>
                            @Html.DisplayNameFor(model => model.SalesFooters.FirstOrDefault().ItemCode)
                        </th>
                        
                         
                       
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var item in Model.SalesFooters)
                    {
                    <tr>
                        <td>
                            @Html.EditorFor(modelItem => item.SalesOrderNo)
                        </td>
                        <td>
                            @Html.EditorFor(modelItem => item.ItemCode)
                        </td>
                       
                     
                    </tr>
                    }
                </tbody>
            </table>
[HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Edit(SalesHeader Header)
        {
            if (ModelState.IsValid)
            {
                _repositoryHeader.Update(Header);

                foreach (var Footer in Header.SalesFooters)
                    _repositoryFooter.Update(Footer);

                db.SaveChanges();

                return RedirectToAction("Index");
            }
            return View(Header);
        }

1 Ответов

Рейтинг:
2

Richard Deeming

Привязка модели к списку | вы были взломаны[^]

Менять петли на ваш взгляд к for петля:

<tbody>
@for (int i = 0; i < Model.SalesFooters.Count; i++)
{
    <tr>
        <td>
            @Html.EditorFor(m => m.SalesFooters[i].SalesOrderNo)
        </td>
        <td>
            @Html.EditorFor(m => m.SalesFooters[i].ItemCode)
        </td>
    </tr>
}
</tbody>