0

我在 MVC4 中有一个自定义路由设置,它允许以下模式:

文化/控制器/动作/id

除了默认值:

控制器/动作/ID

我想向我的页面添加一个显示可用文化的菜单。当用户单击一种文化时,应该将“文化”的标识符插入/更新到 URL 中吗?

在 MVC4 中像这样修改路由(url)的最佳方法是什么?

4

1 回答 1

0

Make an 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);
    }
}

Then use it in the view:

<%foreach(var culture in Model.cultures){%>
    <%=Html.CultureUrl(culture)%>
<%}%>
于 2013-02-28T21:38:30.643 回答