簡體   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