2013-11-27 5 views
0

Я добавил следующий маршрут в коллекцию маршрутизации, после чего обратный вызов RedirectToAction("Index", "Company"); прекратил работу.RedirectToAction прекратил работу при добавлении нового маршрута

routes.MapRoute(
      name: "CompanyRoute", 
      url: "{id}", 
      defaults: new { controller = "Company", action = "Get" }, 
      constraints: new { id = @"^[a-z]+$" } 

     ); 

И эта ошибка появляется.

Error message: The model item passed into the dictionary is of type 
'System.Collections.Generic.List`1[Project.Models.Company]', but 
this dictionary requires a model item of type 'Project.Models.Company'. 

Кто-нибудь знает, о чем эта ошибка может быть?

ответ

1

Это не имеет никакого отношения к вашему маршруту. Это ошибка Razor, и это означает, что вы передали тип вашему представлению, который не соответствует объявленной модели для этого представления. В этом случае вы передаете List<Company> вместо Company. Проверьте действие, которое отображает это представление, и убедитесь, что модель, которую вы передаете в вызов View(), представляет собой один экземпляр Company.

+0

Когда я удаляю маршрут, вызов вызывает RedirectToAction, поэтому он должен быть маршрутом. – MikeAlike234

+0

Возможно, другое действие отвечает заданным маршрутом. Впрочем, это не главное. Я говорю вам, что означает ошибка. Узнайте, почему ваш взгляд передается «List » вместо «Company», и ошибка исчезнет. –

+0

Да, маршрут (CompanyRoute) поймал вызов, но не мог бы вы объяснить мне почему ?, потому что, если я напишу Company/Index в поле адреса, тогда маршрут по умолчанию обработает его. По какой-то причине вызов RedirectToAction («Индекс», «Компания»); не переводится на Компанию/Индекс, и поэтому маршрут перенаправляется на Компанию/Get с идентификатором, установленным в null. Что может быть причиной этого? – MikeAlike234

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