12

Tôi đang sử dụng phiên bản mới nhất của gói AttributeRouting trên Nuget để thiết lập định tuyến cho Dự án ASP.Net MVC của tôi. Tôi đang tạo một trang web có hai ngôn ngữ, tiếng Anh (chính) và tiếng Tây Ban Nha (Trung học). Các url cho hai ngôn ngữ là khác nhau. Ví dụ, về chúng tôi cho tiếng Anh sẽ như thế này: www.root.com/en/about-us trong khi phiên bản tiếng Tây Ban Nha có thể là: www.root.com/es/sobre-nosotros.Các vấn đề với Định tuyến và Bản địa hóa Thuộc tính

Tôi có một thiết lập Route Tiền tố như sau: [RoutePrefix ("en", TranslationKey = "Home")]

Sau đó, tôi có một chương trình mà tôi tạo ra mà đọc giá trị từ một file XML vào FluentTranslationProvider . Mã cho đăng ký các tuyến đường của tôi trông như thế này:

var translations = new FluentTranslationProvider(); 
     translations 
      .AddTranslations() 
      .FromFile(); 

routes.MapAttributeRoutes(
      config => 
       { 
        config.AddRoutesFromControllersOfType<BaseController>(); 
        config.AddTranslationProvider(translations); 
        config.CurrentUICultureResolver = 
         (httpContext, routeData) => 
         (string) routeData.DataTokens["cultureName"] ?? 
         Thread.CurrentThread.CurrentUICulture.Name; 
       }); 

Và có vẻ như được làm việc vì tôi có thể truy cập trang Routes.axd của tôi và thấy như sau: http://imm.io/nm7Z

Sau đó trong trang của tôi, chương trình mã của tôi rằng CurrentCulture của tôi được thiết lập để es-AR, nhưng khi tôi gọi lớp URLHelper để xây dựng một url, nó chỉ xây dựng phiên bản tiếng Anh mặc định và sẽ không cho tôi phiên bản tiếng Tây Ban Nha. Bất cứ ai có thể cho tôi cái nhìn sâu sắc về lý do tại sao điều này có thể là trường hợp? Tôi không thể cho cuộc sống của con số của tôi này ra.

+0

xin vui lòng thêm bạn mã để gọi urlhelper –

+2

Ngoài ra, các hình ảnh mà bạn liên kết đến trong bài viết của bạn không tồn tại – Henrik

Trả lời

1

Bạn đã thử cập nhật RouteValueDictionary và chuyển đó làm tham số cho trình trợ giúp url của bạn chưa? Tôi làm một cái gì đó tương tự cho toggling ssl.

Dưới đây là một số mẫu mã để xem xét, như một hàm helper:

@functions { 

    public static string LanguageUrl(WebViewPage page, string actionName, string controllerName, string desiredCulture) 
    { 
    // translate action name here, if needed. 
    return page.Url.Action(actionName, controllerName, new { cultureName = desireCulture }); 
    } 
} 
Các vấn đề liên quan