Маршрутизация MVC 5 с проблемой параметра

Я пытаюсь создать метод действия редактирования, который принимает идентификатор в качестве параметра, чтобы получить сотрудника из базы данных и разрешить пользователю редактировать детали. Вот мой код для действия редактирования.

public ActionResult Edit(int id)
        {

            EmployeeData eData = new EmployeeData();
            Employee employee = eData.Employees.Single(x => x.ID == id);
            return View(employee);
        }
    }

Это моя конфигурация маршрутизатора

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes();

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }

Я попытался использовать маршрутизацию атрибутов и все еще не смог получить желаемый результат. И я получаю это сообщение об ошибке.

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


person Kushal    schedule 11.12.2017    source источник
comment
Он отлично работает, если явно указать идентификатор в URL.   -  person Kushal    schedule 12.12.2017


Ответы (1)


Мне просто нужно было отредактировать ссылку Actionlink помощника Html для редактирования на странице индекса из

@Html.ActionLink("Редактировать", "Редактировать", new { /* id=item.PrimaryKey */}) |

to

@Html.ActionLink("Редактировать", "Редактировать", новый {id=item.ID}) |

поэтому теперь URL-адрес принимает значение идентификатора непосредственно со страницы индекса представления «Сотрудник».

person Kushal    schedule 12.12.2017