1

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("Cole.k.perry@wv.gov");
                }
                //Send an email to bat lady if project needs a bat habitat assessement
                if (Bat)
                {
                    SendEmail("Cole.k.perry@wv.gov");
                }
                return RedirectToAction(nameof(Index));
            }
            return View(typeOne);
        }
GrillOwner69420
  • 645
  • 2
  • 5
  • 24

3 Answers3

0

Can you please check the ASP.NET <form /> element? It should look like this:

<form asp-controller="MyController" asp-action="MyAction" method="post">
    <!-- Your controls and etc -->
</form>
Jeremy Caney
  • 7,102
  • 69
  • 48
  • 77
0

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

Of course it will print the correct value, because you post the data to backend successfully. But you need to know the dropdown populated data is not stored by Prepared_By. It stores value by using asp-items="@(new SelectList(ViewBag.users))". You do not set the ViewBag.users in your post method, that is why it makes ArgumentNullException error when you post back.

[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();
    }
    //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("ViewName", typeOne);
    //if you return Create.cshtml,  no need specify the view name
    return View(typeOne);
}

As per your second way, be sure to debug your code and to see when it goes. It is impossible if you do not set value for ViewBag.users when you populate the dropdown. Be careful if any difference.

Here is a whole simple working demo:

Model:

public class Test
{
    public string Id{ get; set; }
    public string Name { get; set; }
}

public class TestModel
{
    public string Prepared_By { get; set; }
}

View(Create.cshtml):

Besides, you need use public SelectList(IEnumerable items, string dataValueField, string dataTextField); which will display the correct value and text for dropdown.

model TestModel

<form method="post">
    <select asp-for="Prepared_By" name="Prepared_By" class="form-control" 
             asp-items="@(new SelectList(ViewBag.users,"Id","Name"))"></select>
    <input type="submit" value="Post" />
</form>

Controller:

[HttpGet]        
public IActionResult Create()
{

    var data = new List<User>()
    {
        new User(){ Id="1",Name= "aa" },
        new User(){ Id="2",Name= "bb" },
        new User(){ Id="3",Name= "cc" }               
    };
    ViewBag.users = data;
    return View();
}
[HttpPost]
public IActionResult Create(TestModel model)
{
    ViewBag.users  = new List<Test>()
    {
        new Test(){ MenuCategoryId="1",Content= "aa" },
        new Test(){ MenuCategoryId="2",Content= "bb" },
        new Test(){ MenuCategoryId="3",Content= "cc" }
    };
    return View(model);
}
Rena
  • 30,832
  • 6
  • 37
  • 72
  • I updated my question to reflect your answer but I have not had any success with it so far. That said, I dont think that the problem is "You do not set the ViewBag.users in your post method, that is why you makes ArgumentNullException error when you post back." There are other drop down boxes before "Prepared_By" on the same create page that do not have this problem. I also use this same drop down list in the exact same place elsewhere without setting it in the POST method. I really appreciate your answer and you taking the time to try to help. I look forward to hearing what you have to say. – GrillOwner69420 Nov 04 '21 at 13:07
  • I can share the entire Create page if it would be helpful to show you what I'm talking about. – GrillOwner69420 Nov 04 '21 at 13:08
  • Also the example you gave doesnt really make sense. There is no GET or POST method at all. I don't see how ````Create```` or ````Index```` is relevant at all to what I need to do. – GrillOwner69420 Nov 04 '21 at 19:13
  • Ok, I think I make error for showing you the sample, I have changed. But I think I have explained to you what is your error at the very beginning. `I also use this same drop down list in the exact same place elsewhere without setting it in the POST method.` Again, It is impossible to work if you do not set the data for `asp-items`. I think you need learn more about what is `asp-items`. And your solution is also based on set the value for `asp-items` all the time. – Rena Nov 05 '21 at 01:26
  • I appreciate the help but again I believe you are mistaken. It is not ````impossible```` as I was doing just that and can recreate it as well lol. – GrillOwner69420 Nov 08 '21 at 18:48
-1

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.

GrillOwner69420
  • 645
  • 2
  • 5
  • 24