2013-02-28 1 views
0

У меня есть настройки пользовательского маршрута в MVC4 который позволяет шаблону, как:Когда пользователь нажимает на культуру, идентификатор для «культуры» должен быть вставлен/обновлен в URL-адрес?

культура/контроллер/действие/идентификатор

в дополнение к по умолчанию:

контроллер/действие/ид

Я хочу добавить меню на свою страницу, отображающее доступные культуры. Когда пользователь нажимает на культуру, идентификатор для «культуры» должен быть вставлен/обновлен в URL-адрес?

Что является ЛУЧШИМ способом изменения маршрута (url), подобного этому в MVC4?

ответ

0

Оформить HtmlHelper

public static class UrlExtensions 
{ 
    public static MvcHtmlString CultureUrl(this HtmlHelper htmlHelper, string cultureName) 
    { 
     RequestContext requestContext = htmlHelper.ViewContext.RequestContext; 

     RouteValueDictionary values = requestContext.RouteData.Values; 

     var data = new 
     { 
      culture = cultureName ?? Thread.CurrentThread.CurrentUICulture.Name, 
      controller = values["controller"], 
      action = values["action"], 
      id = values["id"] 
     }; 

     UrlHelper urlHelper = new UrlHelper(requestContext); 
     string url = urlHelper.RouteUrl(data); 

     return MvcHtmlString.Create(url); 
    } 
} 

Затем используйте его в представлении:

<%foreach(var culture in Model.cultures){%> 
    <%=Html.CultureUrl(culture)%> 
<%}%> 
+0

Я не получаю эту работу? На линии культура = культураName ?? Thread.CurrentThread.CurrentUICulture.Name; ; подчеркивается с ошибкой Synatax error, ','. Я также вижу ошибки. Имя «контроллер» не существует в текущем контексте. Имя «действие» не существует в текущем контексте и т. Д. – user2121236

+0

Точка с запятой, фиксированная запятыми –

+0

Я клянусь, я попытался сменить точки с запятой на запятую, но должен быть «Intellisense» был немного медленным. Во всяком случае, я не получаю ошибку в строке url = UrlHelper.RouteUrl (данные); «Ссылка на объект требуется для нестатического поля, метода или свойства» System.Web.Mvc.UrlHelper.RouteUrl (object) » – user2121236