Search code examples
c#postasp.net-core-mvcasp.net-core-5.0argumentnullexception

ASP.NET Core 5 MVC: ArgumentNullException: Value cannot be null. (Parameter 'items')


I have this list in the GET method for a create page:

List<string> users = (from c in _context.NR_Users select c.Name).ToList();
users.Insert(0, "Select");
ViewBag.users = users;

It is displayed like this:

<div class="form-group col-md-4">
    <label class="control-label">Prepared By</label>
    <select asp-for="Prepared_By" name="Prepared_By" class="form-control" asp-items="@(new SelectList(ViewBag.users))"></select>
    <span asp-validation-for="Prepared_By" class="text-danger"></span>
</div>

In the model Prepared_By is a string.

On the create page when I hit submit I get the following error:

ArgumentNullException: Value cannot be null. (Parameter 'items')

pointing to

<select asp-for="Prepared_By" name="Prepared_By" class="form-control" asp-items="@(new SelectList(ViewBag.users))"></select>

There are a couple things I find really interesting about this issue. First of all, in the POST method for the create page if I print the value of Prepared_By it always prints the correct name:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID,State_Project_Number,Federal_Project_Number,Name,Route_Number,County,Work_Type,Coordinates,Project_Description,Federal_Aid,Minimal_Project_Verification,CE_Category,Amms,Activities_Agreement,Arch_RE,Hist_RE,Arch_RE_Date,Hist_RE_Date,Through_Lanes,Close_Road,ROW_Acquisition,Access_Control,Fifty_Year_Structure,Agency_Coordination,IPAC_Screening_Zone,Section_404_Permit,Ground_Disturbance,Waterway,Special_Use_Permit,Floodplain,Prepared_By,Approved_By,Adduser,Date_Added")] TypeOne typeOne, bool Assessment)
{
    System.Diagnostics.Debug.WriteLine("Prepared by: " + typeOne.Prepared_By);

    if (ModelState.IsValid)
    {
        typeOne.Adduser = User.Identity.Name;
        typeOne.Date_Added = DateTime.Today;

        System.Diagnostics.Debug.WriteLine("Prepared by again: " + typeOne.Prepared_By);

        _context.Add(typeOne);
        await _context.SaveChangesAsync();
    }
}

However when I try to print it a second time inside the if(ModelState.IsValid) it does not work.

What else is interesting is that I use this exact same list in a different create page and it works just fine:

<div class="form-group col-md-3">
    <label class="control-label">DSN PM</label>
    <select asp-for="DSN_PM" name="DSN_PM" class="form-control" asp-items="@(new SelectList(ViewBag.users))"></select>
    <span asp-validation-for="DSN_PM" class="text-danger"></span>
</div>
public async Task<IActionResult> Create([Bind("ID,State_Project_Number,Federal_Project_Number,Project_Name,County,Memo_Date,From,Authorization,DSN_PM,History,History_PM,Review_Exempt_H,SHPO_Approval_H,Archaeology,Archaeology_PM,Review_Exempt_A,SHPO_Approval_A,ESA_Key,Crayfish,Crayfish_Habitat_Assessment,NLEB_4D,USFWS,USFWS_Type,Mussel_Habitat,Mussel_Stream,Within_Airport,ToPo_Quad_Name,Bat_Habitat,Bars,Coordinates,Natural_Resources_Notes,Adduser,Date_Added,Crayfish_Notes,Mussel_Notes")] Project_Screen project_Screen)
{
    if (ModelState.IsValid)
    {
        project_Screen.Adduser = User.Identity.Name;
        project_Screen.Date_Added = DateTime.Today;

        _context.Add(project_Screen);

        await _context.SaveChangesAsync();

        return RedirectToAction(nameof(Index));
    }

    return View(project_Screen);
}

In the second example I create the list in the exact same way in the GET method and I have never had this issue. What could be the problem?

EDIT: Update from question

Controller:

 [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("ID,State_Project_Number,Federal_Project_Number,Name,Route_Number,County,Work_Type,Coordinates,Project_Description,Federal_Aid,Minimal_Project_Verification,CE_Category,Amms,Activities_Agreement,Arch_RE,Hist_RE,Arch_RE_Date,Hist_RE_Date,Through_Lanes,Close_Road,ROW_Acquisition,Access_Control,Fifty_Year_Structure,Agency_Coordination,IPAC_Screening_Zone,Section_404_Permit,Ground_Disturbance,Waterway,Special_Use_Permit,Floodplain,Prepared_By,Approved_By,Adduser,Date_Added")] TypeOne typeOne, bool Assessment)
        {
            System.Diagnostics.Debug.WriteLine("Prepared by: " + typeOne.Prepared_By);
            if (ModelState.IsValid)
            {
                typeOne.Adduser = User.Identity.Name;
                typeOne.Date_Added = DateTime.Today;
                System.Diagnostics.Debug.WriteLine("Prepared by again: " + typeOne.Prepared_By);
                _context.Add(typeOne);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            //set the data for ViewBag.users..
            List<string> users = (from c in _context.NR_Users select c.Name).ToList();
            users.Insert(0, "Select");
            ViewBag.users = users;
            return View(typeOne);
        }

View:

<div class="form-group col-md-4">
                    <label class="control-label">Prepared By</label>
                    <select asp-for="Prepared_By" name="Prepared_By" class="form-control" asp-items="@(new SelectList(ViewBag.users,"Id","Name"))"></select>
                    <span asp-validation-for="Prepared_By" class="text-danger"></span>
                </div>

There are a couple of problems here. First of all, the problem persists and nothing has changed. I'm not sure if the code for the view is correct at all, but it is giving me a Object reference not set to an instance of an object. error but I don't really know what it's pointing to. I also don't know why you added ID because I don't use that anywhere and I don't need to.

EDIT 2:

GET method:

// GET: TypeOnes/Create
        public IActionResult Create()
        {
            List<string> users = (from c in _context.NR_Users select c.Name).ToList();
            users.Insert(0, "Select");
            ViewBag.users = users;

            List<string> adminLeads = (from s in _context.NR_Users
                                      where s.User_Type == "Admin" || s.User_Type == "Unit Leader"
                                      select s.Name).ToList();
            adminLeads.Insert(0, "Select");
            ViewBag.adminLeads = adminLeads.ToList();

            List<SelectListItem> options = new()
            {
                new SelectListItem { Value = "True", Text = "Yes" },
                new SelectListItem { Value = "False", Text = "No" }
            };
            options.Insert(0, new SelectListItem { Value = "Select" });
            ViewBag.options = options;

            List<SelectListItem> assessments = new()
            {
                new SelectListItem { Value = "Mussel", Text = "Mussel" },
                new SelectListItem { Value = "Crayfish", Text = "Crayfish" },
                new SelectListItem { Value = "Both", Text = "Both" },
                new SelectListItem { Value = "No", Text = "No" }
            };
            assessments.Insert(0, new SelectListItem { Value = "Select" });
            ViewBag.options = assessments;

            List <SelectListItem> reTypes = new()
            {
                new SelectListItem { Value = "Appendix A short form", Text = "Appendix A short form" },
                new SelectListItem { Value = "Review exempt", Text = "Review exempt" },
                new SelectListItem { Value = "SHPO", Text = "SHPO" },
                new SelectListItem { Value = "Programatic Agreement", Text = "Programatic Agreement" }
            };
            reTypes.Insert(0, new SelectListItem { Value = "Select", Text = "Select" });
            ViewBag.reTypes = reTypes;

            List <SelectListItem> counties = new()
            {
                new SelectListItem { Value = "Barbour", Text = "Barbour County" },
                new SelectListItem { Value = "Berkeley", Text = "Berkeley County" },
                new SelectListItem { Value = "Boone", Text = "Boone County" },
                new SelectListItem { Value = "Braxton", Text = "Braxton County" },
                new SelectListItem { Value = "Cabell", Text = "Cabell County" },
                new SelectListItem { Value = "Calhoun", Text = "Calhoun County" },
                new SelectListItem { Value = "Clay", Text = "Clay County" },
                new SelectListItem { Value = "Doddridge", Text = "Doddridge County" },
                new SelectListItem { Value = "Fayette", Text = "Fayette County" },
                new SelectListItem { Value = "Gilmer", Text = "Gilmer County" },
                new SelectListItem { Value = "Grant", Text = "Grant County" },
                new SelectListItem { Value = "Greenbrier", Text = "Greenbrier County" },
                new SelectListItem { Value = "Hampshire", Text = "Hampshire County" },
                new SelectListItem { Value = "Hancock", Text = "Hancock County" },
                new SelectListItem { Value = "Hardy", Text = "Hardy County" },
                new SelectListItem { Value = "Harrison", Text = "Harrison County" },
                new SelectListItem { Value = "Jackson", Text = "Jackson County" },
                new SelectListItem { Value = "Jefferson", Text = "Jefferson County" },
                new SelectListItem { Value = "Kanawha", Text = "Kanawha County" },
                new SelectListItem { Value = "Lewis", Text = "Lewis County" },
                new SelectListItem { Value = "Lincoln", Text = "Lincoln County" },
                new SelectListItem { Value = "Logan", Text = "Logan County" },
                new SelectListItem { Value = "Marion", Text = "Marion County" },
                new SelectListItem { Value = "Marshall", Text = "Marshall County" },
                new SelectListItem { Value = "Mason", Text = "Mason County" },
                new SelectListItem { Value = "McDowell", Text = "McDowell County" },
                new SelectListItem { Value = "Mercer", Text = "Mercer County" },
                new SelectListItem { Value = "Mineral", Text = "Mineral County" },
                new SelectListItem { Value = "Mingo", Text = "Mingo County" },
                new SelectListItem { Value = "Monongalia", Text = "Monongalia County" },
                new SelectListItem { Value = "Monroe", Text = "Monroe County" },
                new SelectListItem { Value = "Morgan", Text = "Morgan County" },
                new SelectListItem { Value = "Nicholas", Text = "Nicholas County" },
                new SelectListItem { Value = "Ohio", Text = "Ohio County" },
                new SelectListItem { Value = "Pendleton", Text = "Pendleton County" },
                new SelectListItem { Value = "Pleasants", Text = "Pleasants County" },
                new SelectListItem { Value = "Pocahontas", Text = "Pocahontas County" },
                new SelectListItem { Value = "Preston", Text = "Preston County" },
                new SelectListItem { Value = "Putnam", Text = "Putnam County" },
                new SelectListItem { Value = "Raleigh", Text = "Raleigh County" },
                new SelectListItem { Value = "Randolph", Text = "Randolph County" },
                new SelectListItem { Value = "Ritchie", Text = "Ritchie County" },
                new SelectListItem { Value = "Roane", Text = "Roane County" },
                new SelectListItem { Value = "Summers", Text = "Summers County" },
                new SelectListItem { Value = "Taylor", Text = "Taylor County" },
                new SelectListItem { Value = "Tucker", Text = "Tucker County" },
                new SelectListItem { Value = "Tyler", Text = "Tyler County" },
                new SelectListItem { Value = "Upshur", Text = "Upshur County" },
                new SelectListItem { Value = "Wayne", Text = "Wayne County" },
                new SelectListItem { Value = "Webster", Text = "Webster County" },
                new SelectListItem { Value = "Wetzel", Text = "Wetzel County" },
                new SelectListItem { Value = "Wirt", Text = "Wirt County" },
                new SelectListItem { Value = "Wood", Text = "Wood County" },
                new SelectListItem { Value = "Wyoming", Text = "Wyoming County" }
            };
            ViewBag.counties = counties;

            return View();
        }

If I recreate every list in the POST method then I don't get any errors anywhere, it simply sends me back to the create page and does not perform the database insert

POST method:

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("ID,State_Project_Number,Federal_Project_Number,Name,Route_Number,County,Work_Type,Coordinates,Project_Description,Federal_Aid,Minimal_Project_Verification,CE_Category,Amms,Activities_Agreement,Arch_RE,Hist_RE,Arch_RE_Date,Hist_RE_Date,Through_Lanes,Close_Road,ROW_Acquisition,Access_Control,Fifty_Year_Structure,Agency_Coordination,IPAC_Screening_Zone,Section_404_Permit,Ground_Disturbance,Waterway,Special_Use_Permit,Floodplain,Prepared_By,Approved_By,Adduser,Date_Added")] TypeOne typeOne, string Assessment, bool Bat)
        {
            List<string> users = (from c in _context.NR_Users select c.Name).ToList();
            users.Insert(0, "Select");
            ViewBag.users = users;

            List<string> adminLeads = (from s in _context.NR_Users
                                       where s.User_Type == "Admin" || s.User_Type == "Unit Leader"
                                       select s.Name).ToList();
            adminLeads.Insert(0, "Select");
            ViewBag.adminLeads = adminLeads.ToList();

            List<SelectListItem> options = new()
            {
                new SelectListItem { Value = "True", Text = "Yes" },
                new SelectListItem { Value = "False", Text = "No" }
            };
            options.Insert(0, new SelectListItem { Value = "Select" });
            ViewBag.options = options;

            List<SelectListItem> assessments = new()
            {
                new SelectListItem { Value = "Mussel", Text = "Mussel" },
                new SelectListItem { Value = "Crayfish", Text = "Crayfish" },
                new SelectListItem { Value = "Both", Text = "Both" },
                new SelectListItem { Value = "No", Text = "No" }
            };
            assessments.Insert(0, new SelectListItem { Value = "Select" });
            ViewBag.assessments = assessments;

            List<SelectListItem> reTypes = new()
            {
                new SelectListItem { Value = "Appendix A short form", Text = "Appendix A short form" },
                new SelectListItem { Value = "Review exempt", Text = "Review exempt" },
                new SelectListItem { Value = "SHPO", Text = "SHPO" },
                new SelectListItem { Value = "Programatic Agreement", Text = "Programatic Agreement" }
            };
            reTypes.Insert(0, new SelectListItem { Value = "Select", Text = "Select" });
            ViewBag.reTypes = reTypes;

            List<SelectListItem> counties = new()
            {
                new SelectListItem { Value = "Barbour", Text = "Barbour County" },
                new SelectListItem { Value = "Berkeley", Text = "Berkeley County" },
                new SelectListItem { Value = "Boone", Text = "Boone County" },
                new SelectListItem { Value = "Braxton", Text = "Braxton County" },
                new SelectListItem { Value = "Cabell", Text = "Cabell County" },
                new SelectListItem { Value = "Calhoun", Text = "Calhoun County" },
                new SelectListItem { Value = "Clay", Text = "Clay County" },
                new SelectListItem { Value = "Doddridge", Text = "Doddridge County" },
                new SelectListItem { Value = "Fayette", Text = "Fayette County" },
                new SelectListItem { Value = "Gilmer", Text = "Gilmer County" },
                new SelectListItem { Value = "Grant", Text = "Grant County" },
                new SelectListItem { Value = "Greenbrier", Text = "Greenbrier County" },
                new SelectListItem { Value = "Hampshire", Text = "Hampshire County" },
                new SelectListItem { Value = "Hancock", Text = "Hancock County" },
                new SelectListItem { Value = "Hardy", Text = "Hardy County" },
                new SelectListItem { Value = "Harrison", Text = "Harrison County" },
                new SelectListItem { Value = "Jackson", Text = "Jackson County" },
                new SelectListItem { Value = "Jefferson", Text = "Jefferson County" },
                new SelectListItem { Value = "Kanawha", Text = "Kanawha County" },
                new SelectListItem { Value = "Lewis", Text = "Lewis County" },
                new SelectListItem { Value = "Lincoln", Text = "Lincoln County" },
                new SelectListItem { Value = "Logan", Text = "Logan County" },
                new SelectListItem { Value = "Marion", Text = "Marion County" },
                new SelectListItem { Value = "Marshall", Text = "Marshall County" },
                new SelectListItem { Value = "Mason", Text = "Mason County" },
                new SelectListItem { Value = "McDowell", Text = "McDowell County" },
                new SelectListItem { Value = "Mercer", Text = "Mercer County" },
                new SelectListItem { Value = "Mineral", Text = "Mineral County" },
                new SelectListItem { Value = "Mingo", Text = "Mingo County" },
                new SelectListItem { Value = "Monongalia", Text = "Monongalia County" },
                new SelectListItem { Value = "Monroe", Text = "Monroe County" },
                new SelectListItem { Value = "Morgan", Text = "Morgan County" },
                new SelectListItem { Value = "Nicholas", Text = "Nicholas County" },
                new SelectListItem { Value = "Ohio", Text = "Ohio County" },
                new SelectListItem { Value = "Pendleton", Text = "Pendleton County" },
                new SelectListItem { Value = "Pleasants", Text = "Pleasants County" },
                new SelectListItem { Value = "Pocahontas", Text = "Pocahontas County" },
                new SelectListItem { Value = "Preston", Text = "Preston County" },
                new SelectListItem { Value = "Putnam", Text = "Putnam County" },
                new SelectListItem { Value = "Raleigh", Text = "Raleigh County" },
                new SelectListItem { Value = "Randolph", Text = "Randolph County" },
                new SelectListItem { Value = "Ritchie", Text = "Ritchie County" },
                new SelectListItem { Value = "Roane", Text = "Roane County" },
                new SelectListItem { Value = "Summers", Text = "Summers County" },
                new SelectListItem { Value = "Taylor", Text = "Taylor County" },
                new SelectListItem { Value = "Tucker", Text = "Tucker County" },
                new SelectListItem { Value = "Tyler", Text = "Tyler County" },
                new SelectListItem { Value = "Upshur", Text = "Upshur County" },
                new SelectListItem { Value = "Wayne", Text = "Wayne County" },
                new SelectListItem { Value = "Webster", Text = "Webster County" },
                new SelectListItem { Value = "Wetzel", Text = "Wetzel County" },
                new SelectListItem { Value = "Wirt", Text = "Wirt County" },
                new SelectListItem { Value = "Wood", Text = "Wood County" },
                new SelectListItem { Value = "Wyoming", Text = "Wyoming County" }
            };
            ViewBag.counties = counties;




            System.Diagnostics.Debug.WriteLine("Prepared by: " + typeOne.Prepared_By);
            if (ModelState.IsValid)
            {
                typeOne.Adduser = User.Identity.Name;
                typeOne.Date_Added = DateTime.Today;
                System.Diagnostics.Debug.WriteLine("Prepared by again: " + typeOne.Prepared_By);
                var prep = typeOne.Prepared_By;
                typeOne.Prepared_By = prep;
                _context.Add(typeOne);
                await _context.SaveChangesAsync();
                //Send all History and Archaeology Unit Leaders an email
                List<string> histAndArchLeads = (from s in _context.NR_Users
                                           where s.User_Type == "Unit Leader" && s.Unit == "History" || s.Unit == "Archaeology"
                                           select s.Email_Address).ToList();
                foreach(var email in histAndArchLeads)
                {
                    SendEmail(email);
                }
                //Send an email to Traci if project needs a Mussel or Crayfish habitat assessement (Natural resources Lead)
                if (Assessment != "No" )
                {
                    SendEmail("[email protected]");
                }
                //Send an email to bat lady if project needs a bat habitat assessement
                if (Bat)
                {
                    SendEmail("[email protected]");
                }
                return RedirectToAction(nameof(Index));
            }
            return View(typeOne);
        }

Solution

  • I figured it out. I abstracted the drop down lists to a 3rd method DropDowns() and then called that method in both the GET and POST methods:

    public void DropDowns()
            {
                List<string> users = (from c in _context.NR_Users select c.Name).ToList();
                users.Insert(0, "Select");
                ViewBag.users = users;
    
                List<string> adminLeads = (from s in _context.NR_Users
                                           where s.User_Type == "Admin" || s.User_Type == "Unit Leader"
                                           select s.Name).ToList();
                adminLeads.Insert(0, "Select");
                ViewBag.adminLeads = adminLeads.ToList();
    
                List<SelectListItem> options = new()
                {
                    new SelectListItem { Value = "True", Text = "Yes" },
                    new SelectListItem { Value = "False", Text = "No" }
                };
                options.Insert(0, new SelectListItem { Value = "Select" });
                ViewBag.options = options;
    
                List<SelectListItem> assessments = new()
                {
                    new SelectListItem { Value = "Mussel", Text = "Mussel" },
                    new SelectListItem { Value = "Crayfish", Text = "Crayfish" },
                    new SelectListItem { Value = "Both", Text = "Both" },
                    new SelectListItem { Value = "No", Text = "No" }
                };
                assessments.Insert(0, new SelectListItem { Value = "Select" });
                ViewBag.assessments = assessments;
    
                List<SelectListItem> reTypes = new()
                {
                    new SelectListItem { Value = "Appendix A short form", Text = "Appendix A short form" },
                    new SelectListItem { Value = "Review exempt", Text = "Review exempt" },
                    new SelectListItem { Value = "SHPO", Text = "SHPO" },
                    new SelectListItem { Value = "Programatic Agreement", Text = "Programatic Agreement" }
                };
                reTypes.Insert(0, new SelectListItem { Value = "Select", Text = "Select" });
                ViewBag.reTypes = reTypes;
    
                List<SelectListItem> counties = new()
                {
                    new SelectListItem { Value = "Barbour", Text = "Barbour County" },
                    new SelectListItem { Value = "Berkeley", Text = "Berkeley County" },
                    new SelectListItem { Value = "Boone", Text = "Boone County" },
                    new SelectListItem { Value = "Braxton", Text = "Braxton County" },
                    new SelectListItem { Value = "Cabell", Text = "Cabell County" },
                    new SelectListItem { Value = "Calhoun", Text = "Calhoun County" },
                    new SelectListItem { Value = "Clay", Text = "Clay County" },
                    new SelectListItem { Value = "Doddridge", Text = "Doddridge County" },
                    new SelectListItem { Value = "Fayette", Text = "Fayette County" },
                    new SelectListItem { Value = "Gilmer", Text = "Gilmer County" },
                    new SelectListItem { Value = "Grant", Text = "Grant County" },
                    new SelectListItem { Value = "Greenbrier", Text = "Greenbrier County" },
                    new SelectListItem { Value = "Hampshire", Text = "Hampshire County" },
                    new SelectListItem { Value = "Hancock", Text = "Hancock County" },
                    new SelectListItem { Value = "Hardy", Text = "Hardy County" },
                    new SelectListItem { Value = "Harrison", Text = "Harrison County" },
                    new SelectListItem { Value = "Jackson", Text = "Jackson County" },
                    new SelectListItem { Value = "Jefferson", Text = "Jefferson County" },
                    new SelectListItem { Value = "Kanawha", Text = "Kanawha County" },
                    new SelectListItem { Value = "Lewis", Text = "Lewis County" },
                    new SelectListItem { Value = "Lincoln", Text = "Lincoln County" },
                    new SelectListItem { Value = "Logan", Text = "Logan County" },
                    new SelectListItem { Value = "Marion", Text = "Marion County" },
                    new SelectListItem { Value = "Marshall", Text = "Marshall County" },
                    new SelectListItem { Value = "Mason", Text = "Mason County" },
                    new SelectListItem { Value = "McDowell", Text = "McDowell County" },
                    new SelectListItem { Value = "Mercer", Text = "Mercer County" },
                    new SelectListItem { Value = "Mineral", Text = "Mineral County" },
                    new SelectListItem { Value = "Mingo", Text = "Mingo County" },
                    new SelectListItem { Value = "Monongalia", Text = "Monongalia County" },
                    new SelectListItem { Value = "Monroe", Text = "Monroe County" },
                    new SelectListItem { Value = "Morgan", Text = "Morgan County" },
                    new SelectListItem { Value = "Nicholas", Text = "Nicholas County" },
                    new SelectListItem { Value = "Ohio", Text = "Ohio County" },
                    new SelectListItem { Value = "Pendleton", Text = "Pendleton County" },
                    new SelectListItem { Value = "Pleasants", Text = "Pleasants County" },
                    new SelectListItem { Value = "Pocahontas", Text = "Pocahontas County" },
                    new SelectListItem { Value = "Preston", Text = "Preston County" },
                    new SelectListItem { Value = "Putnam", Text = "Putnam County" },
                    new SelectListItem { Value = "Raleigh", Text = "Raleigh County" },
                    new SelectListItem { Value = "Randolph", Text = "Randolph County" },
                    new SelectListItem { Value = "Ritchie", Text = "Ritchie County" },
                    new SelectListItem { Value = "Roane", Text = "Roane County" },
                    new SelectListItem { Value = "Summers", Text = "Summers County" },
                    new SelectListItem { Value = "Taylor", Text = "Taylor County" },
                    new SelectListItem { Value = "Tucker", Text = "Tucker County" },
                    new SelectListItem { Value = "Tyler", Text = "Tyler County" },
                    new SelectListItem { Value = "Upshur", Text = "Upshur County" },
                    new SelectListItem { Value = "Wayne", Text = "Wayne County" },
                    new SelectListItem { Value = "Webster", Text = "Webster County" },
                    new SelectListItem { Value = "Wetzel", Text = "Wetzel County" },
                    new SelectListItem { Value = "Wirt", Text = "Wirt County" },
                    new SelectListItem { Value = "Wood", Text = "Wood County" },
                    new SelectListItem { Value = "Wyoming", Text = "Wyoming County" }
                };
                ViewBag.counties = counties;
            }
    

    GET:

    // GET: TypeOnes/Create
            public IActionResult Create()
            {
                DropDowns();
    
                return View();
            }
    

    POST:

     [HttpPost]
            [ValidateAntiForgeryToken]
            public async Task<IActionResult> Create([Bind("ID,State_Project_Number,Federal_Project_Number,Name,Route_Number,County,Work_Type,Coordinates,Project_Description,Federal_Aid,Minimal_Project_Verification,CE_Category,Amms,Activities_Agreement,Arch_RE,Hist_RE,Arch_RE_Date,Hist_RE_Date,Through_Lanes,Close_Road,ROW_Acquisition,Access_Control,Fifty_Year_Structure,Agency_Coordination,IPAC_Screening_Zone,Section_404_Permit,Ground_Disturbance,Waterway,Special_Use_Permit,Floodplain,Prepared_By,Approved_By,Adduser,Date_Added")] TypeOne typeOne, string Assessment, bool Bat)
            {
                DropDowns();
                if (ModelState.IsValid)
                {
                    typeOne.Adduser = User.Identity.Name;
                    typeOne.Date_Added = DateTime.Today;
                    _context.Add(typeOne);
                    await _context.SaveChangesAsync();
                    return RedirectToAction(nameof(Index));
                }
                return View(typeOne);
            }
    

    And it started working.