Link to home
Start Free TrialLog in
Avatar of ukerandi
ukerandiFlag for United Kingdom of Great Britain and Northern Ireland

asked on

C# MVC Error message after Post data (this MVC core)

Hi,
I'm getting following error message:

An unhandled exception occurred while processing the request.

InvalidOperationException: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'VBGJobList'.
Microsoft.AspNetCore.Mvc.ViewFeatures.DefaultHtmlGenerator.GetSelectListItems(ViewContext viewContext, string expression)

Note: Data is successuly adding to the table but with error message 

Code:



 [HttpGet]
public IActionResult PostJobs()
        {
            SqlConnection con = new SqlConnection(@"Server=test; Database=Test_App;User Id=sa;Password=abc111");
            //select the Job number
            //===================================================================================================
            con.Open();

            SqlCommand jobSqlCommand = con.CreateCommand();
            jobSqlCommand.CommandText = "select user from emp where stat='R'";
            List<SelectListItem> Joblist = new List<SelectListItem>();
            SqlDataReader jobdataReader = jobSqlCommand.ExecuteReader();
            while(jobdataReader.Read())
            {
                Joblist.Add(new SelectListItem() { Text= jobdataReader[0].ToString(), Value= jobdataReader[0].ToString() });

            }

            jobdataReader.Close();


            
            //ViewData["ddldepartmentlist"] = Joblist;
            //===================================================================================================

            // work center

            ////===================================================================================================

            SqlCommand WCSqlCommand = con.CreateCommand();




            //===================================================================================================

            // Operations

            ////===================================================================================================






            //jobSqlCommand.Dispose();
            con.Close();
            //===================================================================================================

            // start date and End Date

            ////===================================================================================================
            DateTime start = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 0, 0, 0);
            DateTime end = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 23, 59, 59);
            int i = 0;
            List<SelectListItem> list = new List<SelectListItem>();
            while (start.AddMinutes(1) <= end)
            {
                list.Add(new SelectListItem() { Text = DateTime.Today.ToShortDateString() + " "+ start.AddMinutes(1).ToString("t"), Value = DateTime.Today.ToShortDateString() + " " + start.AddMinutes(1).ToString("t") });
                start = start.AddMinutes(1);
                i += 1;
            }
            ViewBag.DDLList = list;

            ViewBag.DDLEndTimeList = list;
            ViewBag.VBGJobList = Joblist;
            return View();

        }

Open in new window

Post

[HttpPost]
        public IActionResult PostJobs(Jobs postJobs)
        {
            //if(!ModelState.IsValid)
            //    return View();
            string ErrMsaage = string.Empty;
            try
            {
                string jobNumber = Request.Form["VBGJobList"].ToString();
                DateTime startdate = Convert.ToDateTime(postJobs.StartDate);
                DateTime enddate = Convert.ToDateTime(postJobs.EndDate);
                //Trusted_Connection=True
                SqlConnection con = new SqlConnection(@"Server=test; Database=rec;User Id=sa;Password=wwww");
                con.Open();
                SqlCommand cmdCommand = con.CreateCommand();
                cmdCommand.CommandText = "InsertJTimeSp";
                cmdCommand.Parameters.Add("JobNumber", SqlDbType.NVarChar).Value = jobNumber;
                cmdCommand.Parameters.Add("suffix", SqlDbType.Int).Value = postJobs.jobsuffix;
                cmdCommand.Parameters.Add("oper_num", SqlDbType.Int).Value = postJobs.Operation;
                cmdCommand.Parameters.Add("wc", SqlDbType.NVarChar).Value = postJobs.workcenter;
                cmdCommand.Parameters.Add("StartDate", SqlDbType.DateTime).Value = startdate;
                cmdCommand.Parameters.Add("Endate", SqlDbType.DateTime).Value = enddate;


                cmdCommand.CommandType = CommandType.StoredProcedure;
                cmdCommand.ExecuteNonQuery();
                cmdCommand.Dispose();
                con.Close();
            }
            catch (Exception ie)
            {
                postJobs.JobNumber = ie.Message.ToString();


            }
            return View();
           

        }

Open in new window


Class file:
  public class Jobs
    {

        //public long ID { get; set; }
        //private string _key;
        //public int suffix { get; set; }


        //public string Key
        //{
        //    get
        //    {
        //        if (_key == null)
        //        {
        //            _key = Regex.Replace(Guid.NewGuid().ToString("N"), "[^a-z)-9]", "-");
        //        }
        //        return Key;
        //    }

        //    set { _key = value; }
        //}

        [Required]
        [StringLength(10,MinimumLength =10,ErrorMessage ="Job Number will be at least 10 Charactors long")]
        //public IEnumerable<SelectListItem> JobNumber { get; set; }
        public string JobNumber { get; set; }
        [Required(ErrorMessage ="Please enter correct date and time")]
        [DisplayFormat(DataFormatString ="{0:dd/mm/yyyy}")]
        [DataType(DataType.DateTime)] 
        public DateTime StartDate { get; set; }
        [Required]
        public DateTime EndDate { get; set; }
       // [Required]
        public string username { get; set; }

        public int jobsuffix { get; set; }

        public string workcenter { get; set; }

        public int Operation { get; set; }

Open in new window

View

<form asp-action="PostJobs" asp-controller="Home">
                @Html.ValidationSummary()
                <div class="row">
                    <div class="col-2">
                        @Html.Label("JobNumber")
                    </div>
                    <div class="col">
                        @Html.DropDownList("VBGJobList", ViewBag.VBGJobList as IEnumerable<SelectListItem>)

                    </div>
                </div>

                <div class="row">
                    <div class="col-2">
                        @Html.ValidationMessageFor(x => x.JobNumber)
                    </div>
                </div>
                <div class="row">
                    <div class="col-2">
                        @Html.Label("StartTime")
                    </div>
                    <div class="col-2">
                        @Html.DropDownListFor(x => x.StartDate, ViewBag.DDLList as IEnumerable<SelectListItem>)
                    </div>
                </div>
                <div class="row">
                    <div class="col-2">
                        @Html.Label("End Time")
                    </div>
                    <div class="col">
                        @Html.DropDownListFor(x => x.EndDate, ViewBag.DDLEndTimeList as IEnumerable<SelectListItem>)
                    </div>
                </div>
                <div class="row">
                    <div class="col-2">
                        @Html.Label("Operation number")
                    </div>
                    <div class="col-2">
                        @Html.TextBoxFor(x => x.Operation, "Operation")
                    </div>
                </div>

                <div class="row">
                    <div class="col-2">
                        @Html.Label("Work Center")
                    </div>
                    <div class="col-2">
                        @Html.TextBoxFor(x => x.workcenter, "workcenter")
                    </div>
                </div>





                <div class="row">
                    <div class="col-2">


                    </div>
                </div>


                <div class="row">
                    <div class="col-2">
                        <hr />
                    </div>
                </div>

                <div class="row">
                    <div class="col-2">
                    </div>
                    <div class="col-2">
                        <button type="submit" class="btn-info">Update</button>
                    </div>
                </div>
            </form>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Dorababu M
Dorababu M
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial