Как исправить ошибку «Словарь параметров содержит пустую запись для параметра« id »ненулевого типа« System.Int32 »» - PullRequest
0 голосов
/ 06 мая 2019

Я установил E_id в качестве первичного ключа. Моя функция редактирования не работает. Она постоянно выдает ошибку. Но мои функции создания и индексирования работают хорошо. В чем будет проблема моего кода? Это ОШИБКА

[ArgumentException: словарь параметров содержит пустую запись для параметра 'id' необнуляемого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Edit (Int32)' в 'BusinessObjects.Controllers.EmployeeController».Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры]

public ActionResult Index()
        {

            EmployeeBusinessLayer employeebusinesslayer = new EmployeeBusinessLayer();
            List<Employee> employees = employeebusinesslayer.Employees.ToList();

            return View(employees);
        }

        [HttpGet] //Create after this Get
        [ActionName("Create")] //old name of function
        public ActionResult Create_get()
        {
            return View();
        }

        [HttpGet]
        public ActionResult Edit(int id)
        {
            EmployeeBusinessLayer employeebusinesslayer = new EmployeeBusinessLayer();

                Employee employee = employeebusinesslayer.Employees.Single(emp => emp.E_id == id);

                return View(employee);

        }

        [HttpPost] //Create after this Get
        [ActionName("Create")]//old name of function 
        public ActionResult Create_post() 
        {
            if (ModelState.IsValid)
            {
                Employee employee = new Employee();
                UpdateModel(employee); //Updatemodel for employee - Call for new entries

                EmployeeBusinessLayer employeebusinesslayer = new EmployeeBusinessLayer();
                employeebusinesslayer.AddEmployee(employee);

                return RedirectToAction("Index");
            }
            return View();
        }

    }
}

1 Ответ

1 голос
/ 06 мая 2019

Вы должны изменить Edit(int id) на Edit(int? id), чтобы не вводить идентификатор ввода регистра в URL или не номер.

И обновить эту строку кода

Employee employee = id != null ? employeebusinesslayer.Employees.Single(emp => emp.E_id == id.Value) : null;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...