2011-08-06 51 views
4

我想拿出知道如何基於地址字符串:資源下載樣式地址URL的定位可能實現

http://msdn.microsoft.com/en-us/library/system.string.aspx 
http://msdn.microsoft.com/ru-ru/library/system.string.aspx 

我試圖找到有關ASP.NET本地化的各種信息實現MSDN,如本地化,但未能找到可用於獲得上述結果的策略描述。

我對ASP.NET並不是很有經驗,並希望得到一些關於如何在我的網站上實現類似路徑的建議(例如使用最少的代碼重複的最佳方法)。

據我所知,我可以複製兩個文件夾中的兩個文件。或10個文件夾中的10個文件,如果我有10個文化。但這聽起來不是最好的策略。是否有一些重寫&參數傳遞進行或?

更新:我最終實現了以下方法: 我我註冊路由到所有當前的文化(在泛型方法)本地化的網頁, 例如用於help.aspx我註冊ru-ru/help/en-us/help/路線,幫助裏面的.aspx(和其他可本地化的頁面,oop方式)我分析地址字符串並檢索所需的語言。之後,我設置了與url中提供的相關文化匹配的html內容。

回答

3

微軟似乎是rewriting the URL,或利用ASP.NET中的custom routing。他們正在使用URL來確定選擇哪種文化。他們可以使用查詢字符串,但URL不會很好。

我建議您首先查看ASP.NET MVC,因爲它使用開箱即用的路由。然後修改路線以與上述MS使用的路線相匹配,然後再使用它們應用文化。

你將在哪裏託管你的應用程序可能會影響你是否可以做類似的事情。如果您在管理整個服務器而不使用共享主機,那麼實現這些功能將會更容易,尤其是URL重寫。如果您必須使用ASP.NET 2.0,因爲您處於一些老化的企業環境中,那麼您可能會遇到更困難的時間。

+0

我在IIS 7.5上託管並使用ASP.NET 4.0,因此老化環境不是幸運的問題。 –

0

瓦倫丁,嘗試使用URL路由:

1 - 添加路由信息,以Global.asax中

void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapPageRoute("cultureCrossroad", "{culture}/Library/{article}", "~/library/ArticleHost.aspx"); 
} 

2 - 創建主頁在〜/庫/ ArticleHost.aspx

public partial class ArticleHost : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    // ! Here we have access to url's parts and can redirect user for desired page via Server.Transfer method. 

    var response = string.Format("culture: {0}<br/> article: {1}", Page.RouteData.Values["culture"], Page.RouteData.Values["article"]); 
    Response.Write(response); 
    } 
}