2014-09-14 3 views
0

подробнее см:Ресурс не найден. RouteConfig в MVC

RouteConfig класса:

public class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional} 
       ); 
      routes.MapRoute(
       name: "Templates", 
       url: "templates/{controller}/{template}", 
       defaults: new { action = "Template" } 
       ); 
     } 
    } 

TeamsController:

public class TeamsController : Controller 
    { 
     public ActionResult Template(string template) 
     { 
      switch (template.ToLower()) 
      { 
       case "list": 
        return PartialView(Url.Content("~/Views/Teams/List.cshtml")); 
       case "add": 
        return PartialView(Url.Content("~/Views/Teams/Add.cshtml")); 
       case "delete": 
        return PartialView(Url.Content("~/Views/Teams/Delete.cshtml")); 
       case "edit": 
        return PartialView(Url.Content("~/Views/Teams/Edit.cshtml")); 
       case "detail": 
        return PartialView(Url.Content("~/Views/Teams/Detail.cshtml")); 
       default: 
        throw new Exception("template not known"); 
      } 
     } 
    } 

запрос URL: http://localhost:1533/templates/teams/add

ошибка: Ошибка сервера в '/' Заявка.

Ресурс не найден.

Зачем возникает эта ошибка?

+0

Переместите маршрут «По умолчанию» после маршрута «Шаблоны» –

ответ

0

Попробуйте переназначение ваших маршрутов в RouteConfig.cs файле, как показано ниже:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      name: "Templates",       //move custom routes above default routes 
      url: "templates/{controller}/{template}", 
      defaults: new { action = "Template" } 
      ); 

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

я м обеспечивая небольшое объяснение вашей проблемы здесь, так что вы можете легко понять, смотрите, когда мы запускаем наш MVC приложение, то таблица маршрутизации сгенерированный в файле global.asax, где вы регистрируете свои маршруты таким образом, что в соответствии с вашей маршрутизацией маршруты по умолчанию будут регистрироваться первыми, а маршрут по умолчанию будет выше по сравнению с вашими настраиваемыми маршрутами, поэтому он всегда советует, чтобы ставить пользовательские маршруты выше маршрутов по умолчанию, как показано в моем ответе.

Хорошая статья о распространенных ошибках в маршрутизации MVC - here.

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