繁体   English   中英

当路由缺少asp.net MVC中的“部分”时,如何重定向?

[英]How to redirect when route is missing “parts” in asp.net MVC?

假设我有一个这样的网址:

www.site.com/en/home/list/2010-09-30

“ en”是英语的,我想确保在URL中始终设置了语言标记。 如果用户输入www.site.com/home/list/2010-09-30我希望将其重定向到www.site.com/en/home/list/2010-09-30 (其中en是默认语言)。

如何在asp.net MVC中最好地完成(如果重要的话,版本)?

这可能最好在自定义HttpModule中进行处理。 我相信您已经知道了,但为了以防万一,您也可以在路线声明中默认路线值“en”。 它不会重定向页面,但如果URL中没有文化,则文本将始终在代码中设置。

context.MapRoute(
    "Default",
    "{culture}/{controller}/{action}/{id}",
    new { culture = "en", action = "Index" });

一个简单的解决方案是使用通配符路由(这应该在global.asax文件的底部):

routes.MapRoute(
                "WildCard",
                "{*url}",
                new { controller = "Main", action = "EnglishDefault" }
            );

然后你的行动是:

public ActionResult EnglishDefault (string url)
{
   return Redirect("/en/" + url);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM