次のようなパターンを可能にする MVC4 のカスタム ルート設定があります。
文化/コントローラー/アクション/ID
デフォルトに加えて:
コントローラー/アクション/ID
利用可能な文化を表示するメニューをページに追加したいと考えています。ユーザーが文化をクリックすると、「文化」の識別子を URL に挿入/更新する必要がありますか?
MVC4 でこのようにルート (url) を変更する最良の方法は何ですか?
次のようなパターンを可能にする MVC4 のカスタム ルート設定があります。
文化/コントローラー/アクション/ID
デフォルトに加えて:
コントローラー/アクション/ID
利用可能な文化を表示するメニューをページに追加したいと考えています。ユーザーが文化をクリックすると、「文化」の識別子を URL に挿入/更新する必要がありますか?
MVC4 でこのようにルート (url) を変更する最良の方法は何ですか?
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)%>
<%}%>