Добавление ограничения MVC все еще вызывает метод Controller - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь добавить constraint к controller.Я могу ошибаться, но, насколько я понимаю, если route не совпадает, то не должно вызывать метод constructor?

Вот мой маршрут:

routes.MapRoute(
    "UserProfile",
    "UserProfile/{userName}",
    new { controller = "UserProfile", action = "Index" },
    new { userName = @"[a-zA-Z]+" }
);

Итак, я подумал, что, поскольку я спрашиваю userName, когда я нажимаю на URL mywebsite/UserProfile, оно не должно совпадать?Кто-нибудь может исправить мои мысли, также если кто-то может помочь в получении route not вызова метода constructor, потому что отсутствует userName, что тоже было бы здорово.

1 Ответ

0 голосов
/ 04 июля 2011

Если у вас зарегистрирован только этот маршрут, то контроллер не будет создан или попадать под этот маршрут.Я предполагаю, что поведение, которое вы наблюдаете, связано с тем, что вы также оставили регистрацию маршрута по умолчанию, которая будет соответствовать запросу /UserProfile к контроллеру UserProfile и действию Index:

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

Так что удалите этот маршрут по умолчанию, и все будет в порядке.Ваше определение маршрута должно выглядеть так:

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

    routes.MapRoute(
        "UserProfile",
        "UserProfile/{userName}",
        new { controller = "UserProfile", action = "Index" },
        new { userName = @"[a-zA-Z]+" }
    );
}
...