Razor Html.DisplayFor () не выбирает правильный локализованный ресурс - PullRequest
0 голосов
/ 03 мая 2018

Razor не возвращает локализованный ресурс в соответствии с текущей культурой потоков, и я понятия не имею, почему. Он всегда возвращает строку в нейтральном файле resx.

PurchaseOrderModel.cs:

public class PurchaseOrderModel : ProfileSpecificEntityModel {
    [Display(ResourceType = typeof(PurchaseOrderModelRes), Name = "ExpectedDeliveryOn")]
    public DateTimeOffset? ExpectedDeliveryOn { get; set; }
}

В той же папке у меня есть:

PurchaseOrderModelRes.resx -> Нейтральный ресурс. Модификатор доступа установлен на «public». PurchaseOrderModelRes.fr.resx -> Локализованный французский ресурс.

PurchaseOrderReport.cs:

<div>@Html.DisplayNameFor(purchaseOrder => purchaseOrder.ExpectedDeliveryOn)</div>

PurchaseOrderController.cs:

[HttpGet]
public async Task<IActionResult> PurchaseOrdersReportAsync([FromQuery] PurchaseOrderListQueryOptionsModel queryOptions) {
    CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr"); //Should use *.fr.resx files.
    CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
    PaginatedList<PurchaseOrder> purchaseOrders = await _purchaseOrderService.GetPurchaseOrdersAsync(CurrentUser, queryOptions.ToQueryOptions());
    PaginatedListModel<PurchaseOrderModel> purchaseOrderModels = _paginatedListModelConverter.Convert(purchaseOrders, p => _purchaseOrderModelConverter.Convert(p));
    return View("PurchaseOrderReport", purchaseOrderModels.Items);
}

Startup.cs:

services.AddMvc().
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();

1 Ответ

0 голосов
/ 04 мая 2018

Решил проблему, установив культуру в ResourceFilter вместо действия контроллера, как предложено этим потоком: ASP.NET MVC (Async) CurrentCulture не используется совместно с контроллером и представлением

Теперь культура распределяется между контроллером и представлением правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...