khalannz7
Hectopat
- Katılım
- 18 Ağustos 2022
- Mesajlar
- 858
- Çözümler
- 15
Amacım kullanıcının seçtiği dilin kodunu ve id'sini sessionda tutabilmek. Çünkü id'yi veri tabanı sorgularında kullanıyorum örneğin "GetContactByLanguage" proceduresi ile veri tabanına sorgu atıyorum. Kodu da sessionda tutmak istiyorum çünkü linkleri orneksite.com/tr/anasayfa veya orneksite.com/en/home şeklinde kullanıcıya göstermek istiyorum. Aşağıdaki gibi yapıyorum ama maalesef sonuca ulaşamadım.
_LanguagePartial.cshtml:
_LayoutController:
LanguageHelper:
RouteConfig:
_LanguagePartial.cshtml:
HTML:
@model List<GAP_Compressor.Models.Language>
@if (Model != null && Model.Any())
{
var returnUrl = Context.Request.Url?.PathAndQuery ?? "";
foreach (var lang in Model)
{
<li>
<a href="@Url.Action("SetLanguage", "_Layout", new { languageID = lang.language_id, languageCode = lang.code, returnUrl = returnUrl })">
<img src="@lang.image_path" alt="@lang.code"> @lang.code
</a>
</li>
}
}
_LayoutController:
C#:
public ActionResult SetLanguage(int languageID, string languageCode, string returnUrl = "/")
{
LanguageHelper.SetLanguage(languageID, languageCode);
return Redirect(string.IsNullOrEmpty(returnUrl) ? Url.Action("Index", "Home") : returnUrl);
}
LanguageHelper:
C#:
public static class LanguageHelper
{
private const int defaultLanguageID = 1;
private const string defaultLanguageCode = "tr";
public static int GetCurrentLanguageID()
{
return HttpContext.Current.Session["languageID"] as int? ?? defaultLanguageID;
}
public static string GetCurrentLanguageCode()
{
if (HttpContext.Current.Session != null)
{
return HttpContext.Current.Session["languageCode"] as string ?? defaultLanguageCode;
}
return defaultLanguageCode;
}
public static void SetLanguage(int languageID, string languageCode)
{
HttpContext.Current.Session["languageID"] = languageID;
HttpContext.Current.Session["languageCode"] = languageCode;
}
}
RouteConfig:
C#:
routes.MapRoute(
name: "Localized",
url: "{languageCode}/{controller}/{action}/{id}",
defaults: new { languageCode = "tr", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Son düzenleyen: Moderatör: