Getting error on POST with Entity Framework - Value cannot be null. Parameter name: source

╄→гoц情女王★ 提交于 2019-12-02 06:42:50

The issue appears to be the way the editor is setup. I believe that this is causing the model to not properly bind on submit

@Html.EditorFor(m => item.contact_Name)

If you were to inspect the name attribute of the <input> element generated by this helper, you will more than likely see that it reads

<input name="item.contact_Name" />

for every one of these. It may even just say name="contact_Name".

This is a severe drawback of the framework and the workarounds for it are usually to make a whole custom helper or to use a front end solution to fix the names.

The name must match exactly to the model. What it should be for your values is

<input name="traces[0].contact_Name" />
<input name="traces[1].contact_Name" />
etc..

and so I would suggest figuring out a way that works with your current project to make sure that those names get properly set.

Your not checking if vwbooking.traces == null before calling it. While you might expect that .ToList() can protect you from this, Entity Framework can be quirky (anecdotal). Safeguard your call with

if (ModelState.IsValid)
{

    db.bookings.Attach(vwbooking.bookings);
    db.Entry(vwbooking.bookings).State = EntityState.Modified;
    if(vwbooking.traces != null)
    {
            vwbooking.traces.ToList().ForEach( //THE ERROR OCCURS HERE
            t =>
            {
            db.traces.Attach(t);
            db.Entry(t).State = EntityState.Modified;
            }
        );
        db.SaveChanges();
    }
}

and you should be fine.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!