2

У меня есть ASP.Net MVC 6 ПрименениеASP.Net MVC 6 маршрут ошибка

Я добавил маршрут как ниже:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}", 
     defaults: new {Controllers="Statics", action="Index"} 
     ); 

}); 

, но я получаю сообщение об ошибке, как ниже:

системы .InvalidOperationException: параметр маршрута 'controller' имеет как встроенное значение по умолчанию, так и указанное явное значение по умолчанию. Параметр маршрута не может содержать встроенное значение по умолчанию, если значение по умолчанию указано явно, подумайте об удалении одного из них.

Посоветуйте?

+0

Либо удалите значения по умолчанию или значение по умолчанию встроенный – Nkosi

ответ

0

После поиска и тестирование Я нашел хороший пост: http://stephenwalther.com/archive/2015/02/07/asp-net-5-deep-dive-routing

и я обновил свои маршрутов как пыльник он отлично работает

  app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 

      routes.MapRoute(
       name: "route2", 
       template: "statics", 
       defaults: new { controller = "Departments", action = "Index" } 

      ); 

      routes.MapRoute(
       name: "route3", 
       template: "statics/SYears", 
       defaults: new { controller = "SYears", action = "Index" } 
      ); 
      /* 
       routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}", 
       defaults: new {controller="Statics", action="Index"} 
       ); 

      */ 
     }); 
0

Сообщение об ошибке говорит вам, что вам нужно сделать

Вы можете либо удалить значения по умолчанию встроенных

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller}/{action}/{id?}", 
     defaults: new {controller="Statics", action="Index"} 
     ); 

}); 

Или удалить шаблон явного значения по умолчанию:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Statics}/{action=Index}/{id?}"     
     ); 
}); 
+0

я создал папка внутри контроллеров с заголовком Statics, где я ставил некоторые статические контроллеры, как я могу добраться до этих функций контроллеров. –

+0

Не имеет значения, где вы их помещаете. Как только они следуют соглашению, которое вы настраиваете на своих маршрутах. – Nkosi

+0

Этот ответ касается ошибки, указанной в вашем исходном сообщении. – Nkosi

1

Вопрос заключается в том, что вы пытаетесь определить как значение по умолчанию инлайн и явное значение по умолчанию. При определении аргумента template оператор = назначает defaults, но затем вы пытаетесь явно определить значения по умолчанию для следующей строки. Рассмотрим следующий пример:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     // Notice the removal of the defaults from the template? 
     template: "{controller}/{action}/{id?}", 
     defaults: new {Controllers="Statics", action="Index"} 
     ); 

}); 

Альтернативой является определение template с инлайн defaults, а затем опустить defaults линии вообще, как так:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     // Notice how we assign the defaults inline, and omit the defaults line? 
     template: "{controller=Statics}/{action=Index}/{id?}" 
     );  
}); 

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

  • Нет связанных вопросов^_^