2016-12-11 5 views
0

Я хотел бы, чтобы отобразить URL-адрес http://localhost:49930/upload -Пользовательские маршрутизации в asp.net mvc5

RouteConfig.cs-

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 }, 
      namespaces: new[] { "BrSupervisorTracker.Controllers" } 
     ); 

     routes.MapRoute(
      name: "ExcelUploader", 
      url: "upload/{controller}/{action}/{id}",    
      defaults: new { controller = "FileUpload", action = "Index", id = UrlParameter.Optional }, 
      namespaces: new[] { "BrSupervisorTracker.Controllers" } 
     ); 
    } 
} 

контроллер-

public class FileUploadController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View("ExcelUpload"); 
    } 
} 

Но это не работает. Возвращает HTTP 404. Любая помощь?

+2

Заказать matters- конкретные маршруты должны прийти первым. Переместите маршрут «ExcelUploader» до значения по умолчанию и измените URL-адрес на «url:« upload »,' (удалите '/ {controller}/{action}/{id}') –

+0

@StephenMuecke, Спасибо. Он работает после повторного заказа. Сделайте это ответом. –

ответ

1

Маршрутов получить оценку в порядке, ../upload соответствует своему первому (Default) маршруту и ​​пытается вызвать Index() метод UploadController, который не существует, следовательно 404 ответ.

Своп маршруты так по ExcelUploader маршрутов до Default маршрута, а также удалить ненужные сегменты/параметры

routes.MapRoute(
    name: "ExcelUploader", 
    url: "upload", 
    defaults: new { controller = "FileUpload", action = "Index"}, 
    namespaces: new[] { "BrSupervisorTracker.Controllers" } 
); 
routes.MapRoute(
    name: "Default", 
    .... 
}; 
Смежные вопросы