0

次のようなパターンを可能にする MVC4 のカスタム ルート設定があります。

文化/コントローラー/アクション/ID

デフォルトに加えて:

コントローラー/アクション/ID

利用可能な文化を表示するメニューをページに追加したいと考えています。ユーザーが文化をクリックすると、「文化」の識別子を URL に挿入/更新する必要がありますか?

MVC4 でこのようにルート (url) を変更する最良の方法は何ですか?

4

1 に答える 1

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)%>
<%}%>
于 2013-02-28T21:38:30.643 に答える