6

У меня есть маршрут, как так:ASP.NET маршрутизации с НЕ равны тяготами

routes.MapRoute 
    (
    "Profile", 
    "profile/{username}", 
    new { controller = "Profile", action = "Index" }, 
    new { username = @"^(getmoreactivity)" } 
    ); 

Это прекрасно работает для всех пользователей но У меня есть ситуации, когда я хочу, чтобы ударить действие для getmoreactivity. Поэтому я хочу, чтобы это ограничение говорило, когда имя пользователя НЕ получает большую активность. Это просто не работает.

Я застрял в RouteDebugger и попробовал @ "[^ (getmoreactivity)]" @ "^^ (getmoreactivity)" @ "^ getmoreactivity" @ "[^ getmoreactivity]". Ну, я пробовал бесчисленные вещи, но никто не решает мою проблему.

Как, черт возьми, вы помещаете ограничение NOT на целое слово?

ответ

16

попробовать:

routes.MapRoute 
( 
"Profile", 
"profile/{username}", 
new { controller = "Profile", action = "Index" }, 
new { username = "(?!getmoreactivity).*" } 
); 

?! является опережения: http://www.regular-expressions.info/refadv.html

......

+1

смотри также http://stackoverflow.com/questions/406230/regular-expression- to-match-line-that-doesnt-содержать-слово для более подробной информации –