使用编辑操作结果保存时获取错误对象引用为空 [英] When using edit action result to save get error object reference is null

查看:75
本文介绍了使用编辑操作结果保存时获取错误对象引用为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题

i在使用asp.net core 2.1保存数据时获取编辑操作结果错误?

错误在线

problem
i get error on edit action result when save data using asp.net core 2.1 ?
error on line

foreach (var Footer in Header.SalesFooters)


销售页脚上的
为空

为什么以及如何解决错误?


on sales footer is null
why and how to solve error ?

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 ?





我的尝试:





What I have tried:

<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);
        }

推荐答案

模型绑定到列表|你被劫持了 [ ^ ]



将视图中的循环更改为 循环:

Model Binding To A List | You’ve Been Haacked[^]

Change the loop in your view to a for loop:
<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>


这篇关于使用编辑操作结果保存时获取错误对象引用为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆