我在MVC4中设置了自定义路由,允许使用如下模式:
文化/控制器/动作/ ID
除了默认值:
控制器/动作/ ID
我想在我的页面中添加一个显示可用文化的菜单。当用户单击文化时,应将“culture”的标识符插入/更新到URL?
在MVC4中修改这样的路径(url)的最佳方法是什么?
答案 0 :(得分: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)%>
<%}%>