Свойства класса Потеря отображаемого ресурса из атрибута отображения - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть веб-приложение для нескольких культур, но по некоторым причинам некоторые поля теряют свой ресурс.Я использую CI / CD и вручную внедряю, иногда это исправляет, а некоторые нет.

Странная вещь в том, что другие свойства работают хорошо, за исключением тех, которые являются int (свойства, связанные с внешними ключами), которые имеютпользовательский помощник для поля ввода, но я использую Html.LabelFor по умолчанию для всех них, оба свойства имеют атрибут display, и только те свойства int теряют ресурс, превращаясь в PropertyNameId, как в классе модели.

ПотеряПример свойства отображения (атрибуты RequiredRemoteSelect и MvcRemote являются производными от классов RequiredAttribute и Attribute):

    [RequiredRemoteSelect]
    [Display(Name = "Material", ResourceType = typeof(Resources.Base))]
    [MvcRemote("_GetDropDownListMaterial", "Lista")]
    public int MaterialId { get; set; }

Рабочее свойство

    [Required]
    [DataType(DataType.Currency)]
    [Display(Name = "Amount", ResourceType = typeof(Resources.Base))]
    public decimal Amount { get; set; }

Вот как я могу изменить культуру:

        protected void Application_AcquireRequestState(object sender, EventArgs e)
    {
        var desiredCulture = string.Empty;

        if (!string.IsNullOrEmpty(Request.Cookies["Culture"]?.Value))
        {
            desiredCulture = Request.Cookies["Culture"].Value;
        }
        else if (Request.UserLanguages?.Length > 0)
        {
            var culture = Request.UserLanguages.FirstOrDefault();

            if (CultureHelper.AvailableCultures.Contains(culture))
            {
                desiredCulture = culture;
            }
            else
            {
                var neultral = CultureHelper.GetNeultralCulture(desiredCulture);

                if (CultureHelper.AvailableCultures.Contains(neultral))
                {
                    desiredCulture = neultral;
                }
            }
        }

        if (string.IsNullOrEmpty(desiredCulture))
        {
            desiredCulture = CultureHelper.GetDefaultCulture();
        }

        var cultureInfo = new CultureInfo(desiredCulture);

        Thread.CurrentThread.CurrentUICulture = cultureInfo;
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name);
    }
...