首页 > 解决方案 > 通过下拉菜单设置独立于语言的货币

问题描述

我在这里还有一个问题。

我想要一个带有货币的下拉菜单,这是选择和确定哪个有效的部分

[HttpPost]
public IActionResult SetCurrency(IFormCollection forms,string returnUrl)
{
    string storeLocale = forms["customerCurrency"].ToString();

    var record = _context.Currencies.Where(w => w.DisplayLocale == storeLocale).FirstOrDefault();

    var currentLanguageId = _context.Appsettings.Where(w => w.Key == Constants.FrontEndDefaultLanguageId).FirstOrDefault();
    if (record != null)
    {
        _config[Constants.FrontEndDefaultLanguageId] = record.Id.ToString();
        currentLanguageId.Value = record.Id.ToString();
        _context.SaveChanges();
        _toast.AddAlertToastMessage("Currecy changed to " + record.Name); 
    }           
        
    return LocalRedirect(returnUrl);
}

对于我的文化,我这样做是由语言下拉菜单控制的

[HttpPost]
public IActionResult SetCulture(string culture, string returnUrl)
{
    var record = _context.Appsettings.Where(w => w.Key == Constants.FrontEndDefaultLanguageId).FirstOrDefault();
        if (culture == "en")
            record.Value = "1";

        if (culture == "fr")
            record.Value = "2";
        _context.SaveChangesAsync();
        _toast.AddSuccessToastMessage("Language changed to :" + record.Key);

        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
        );
        return LocalRedirect(returnUrl);
 }

我不希望 SetCurrency 覆盖 cookie 中设置的内容,但我希望它设置它是否会使用欧元英镑符号等,所以我认为我需要数字信息,但我不确定在这种情况下我将如何设置它。

图像显示当前设置货币的符号问题导致系统尚未使用哪种货币。

在此处输入图像描述

我的两个下拉菜单是这样的。例如,一个法国人可能住在英国,但必须以英镑为单位。

在此处输入图像描述

这是我的表格供参考

<form id="SetCurrency"
          asp-controller="Warehouse"
          asp-action="SetCurrency"
          asp-route-returnUrl="@returnUrl"
          method="post"
          class="form-horizontal nav-link text-dark"
          role="form">
          <select id="customerCurrency" name="customerCurrency" asp-items="@currencies"   
                  onchange="this.form.submit();" aria-label="@T("Currency.Selector.Label")">

    </select> 
 </form>

标签: c#asp.netasp.net-core

解决方案


推荐阅读