2015-10-19 8 views
1

Я новичок в Asp.net MVC. Я хочу создать гипер ссылки некоторого объекта модели таким образомЗначение нулевого маршрута проходит в ActionLink

<ul>@foreach(Department department in @Model) 
    {   
     <li>@Html.ActionLink(department.Name, "Index", "Employee", new {departmentid= department.Id },null)</li> 
    } </ul> 

Теперь, как это показывает, когда я нажимаю на ссылку в браузере, он должен перейти к Index действия контроллера сотрудника со значением маршрута department.Id . Но когда я нажимаю ссылку, она передает значение нулевого маршрута, но в URL-адресе оно показывает правильное значение. Почему так? Любая помощь?

это индекс действий в контроллере Сотрудника

public ActionResult Index(int id) 
     { 
      List<Employee> employees = new List<Employee>(); 

      employees.AddRange(db.Employees.ToList().Where(x => x.DepartmentId == id)); 

      return View(employees); 
     } 
+1

Что делает ваши действия выглядят как? Вероятно, имена параметров не соответствуют – Liam

+0

Какие имена параметров? Вы бы немного объяснили? @Liam – Khan

+2

изменить '' new {departmentid = department.Id} '' на '' new {id = department.Id} '' –

ответ

6

Ваш implmenting ваш вызов действия неправильно. имена в анонимном объекте (new {departmentid= department.Id }) и имена параметров должны совпадать. Изменение departmentid к id (потому что ваши действия ожидает параметр, называемый идентификатор Index(int id)):

@Html.ActionLink(department.Name, "Index", "Employee", new {id= department.Id },null) 
+0

Охх ... Я думал, что это всего лишь псевдоним ... Большое спасибо , Он работает :) – Khan

+0

Он использует [отражение] (https://msdn.microsoft.com/en-us/library/f7ykdhsy (v = vs.110) .aspx), чтобы соответствовать им, чтобы имена соответствовали – Liam

Смежные вопросы