2016-09-08 2 views
0

Я пытаюсь настроить маршрутизацию как с обычным & Атрибут основан.ASP.NET MVC Attribute & Обычный Маршрутизация не работает

Если я использую стандартный маршрут по умолчанию, включенный в MVC, все работает. но если добавить этот атрибут маршрута, я получаю 404.

Вот запрос GET URL: http://localhost:52386/Home/SimpleSearch?searchTerms=test&dateRange=0

Вот мое RouteAttributes в кодексе:

[RoutePrefix("Home")] 
public class HomeController : Controller 
{ 
    [Route("SimpleSearch/{searchTerms}/{dateRange}/{page?}")] 
    [HttpGet] 
    public ActionResult SimpleSearch(string searchTerms, DateRangeEnum dateRange, int page = 1) 
    { 
     //Code here 
    } 

} 

Также Route Config выглядит следующим образом :

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapMvcAttributeRoutes(); 

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

Я не понимаю, что случилось с этим RouteAttribute, но даже если что-то не так с ним, почему он не делает падать обратно на монастырь по умолчанию циональный маршрут и работа?

ответ

0

С определением маршрута атрибут, вы явно указали шаблон маршрута, чтобы быть

Home/SimpleSearch/{searchTerms}/{dateRange}/{page?} 

Таким образом, вы должны попытаться получить доступ к методу действия с той же схеме URL.

Это должно сработать.

http://localhost:52386/Home/SimpleSearch/test/0 

и модель связующий будет иметь возможность сопоставить "test" для searchTerms параметра и от 0 до dateRange параметра.

Ваш обычный (явно с помощью строки запроса) не будет работать, если у вас есть маршрут атрибута с другим рисунком

+0

Это * должен * работать, но это не делает. Это также дает мне ошибку 404. – Michael

+0

Обычная маршрутизация как-то работает .. потому что, когда я удаляю маршрутизацию атрибутов, нормальный запрос запроса выполняется нормально – Michael

+0

Это (запрос с шаблоном URL-адреса маршрута) должен работать (я только что скопировал и вставил его и проверил). Обычный маршрут не будет работать после того, как вы украсите его определением маршрута атрибута (шаблон пользовательского URL-адреса) – Shyju