2014-11-13 2 views
0

У меня только маршрут. Он настроен как:Url.Action не работает с параметром языка

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

Я создаю ссылку с помощью

<a href='@Url.Action("Index", "Results", new {  lang=System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName}')</a> 

но ссылка не навощенный вообще. Что я делаю неправильно? Кажется хорошо. У меня есть указатель и контроллер результатов. Это нормально, когда у меня есть маршрут по умолчанию MVC поставляется с {контроллер}/{действие}

Это LanguageConstraint:

 public class LanguageConstraint : IRouteConstraint 
{ 
    public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     if (routeDirection == RouteDirection.IncomingRequest) 
     { 
      string language = values["lang"].ToString(); //(en|hr|de|it|fr|sk|nl|hu|sv|pl|cs|ru|sl 
      if (language == "en" || language == "hr" || language == "de" || language == "it" || language == "fr" || language == "sk" || language == "nl" || 
       language == "hu" || language == "sv" || language == "pl" || language == "cs" || language == "ru" || language == "sl") 
       return true; 
      else 
       return false; 
     } 
     return false; 
    } 
} 
+0

Каков фактический URL-адрес, который генерируется? – haim770

+0

Сгенерированный URL-адрес. –

+0

'LanguageConstraint' - это ваш собственный класс? Можете ли вы представить его под вопросом? –

ответ

1

Вы должны изменить способ, как это я думаю

public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
{ 
    if (routeDirection == RouteDirection.IncomingRequest) 
    { 
     string language = values["lang"].ToString(); //(en|hr|de|it|fr|sk|nl|hu|sv|pl|cs|ru|sl 
     if (language == "en" || language == "hr" || language == "de" || language == "it" || language == "fr" || language == "sk" || language == "nl" || 
      language == "hu" || language == "sv" || language == "pl" || language == "cs" || language == "ru" || language == "sl") 
      return true; 
     else 
      return false; 
    } 
    return true; 
} 

Проблема с routeDirection при создании ссылки RouteDirection.UrlGeneration

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