Я пытаюсь перенести мой существующий проект ASP.NET MVC 5 в проект MVC 6 vNext, в то время как мне удалось пройти и решить большинство проблем, я не могу найти какую-либо документацию о том, как использовать RESX файлы ресурсов для локализации в MVC 6
Мои модели ViewModels используют выражения типа
[Required(ErrorMessageResourceType = typeof(Resources.MyProj.Messages), ErrorMessageResourceName = "FieldRequired")]
Это отлично работало в MVC 5 до тех пор, пока RESX был включен правильно, а модификаторы доступа были установлены правильно, но он, похоже, не работает в проекте vNext Кто-нибудь знает, как RESX может использоваться в проектах MVC 6 vNext?
Я видел несколько сообщений здесь и на веб-узле GIT, где говорится, что история локализации для ASP.NET 5/MVC 6 завершена, но я не могу найти достойный образец, в котором использовались строки ресурсов.
Использование приведенного выше кода дает мне ошибку
Ошибка CS0246 Тип или имя пространства имен "Ресурсы" не найдено (вам не хватает директивы using или ссылки на сборку?)
Изменить: Изменен текст, чтобы уточнить, что я ищу реализацию локализации в проектах vNext (MVC 6), я могу заставить его работать в MVC 5.
Изменить 2: Получил бит локализации, после выполнения ответа от Мохаммеда, но теперь я застреваю новую ошибку.
Как только я включу
"Microsoft.AspNet.Localization": "1.0.0-beta7-10364",
"Microsoft.Framework.Localization": "1.0.0-beta7-10364",
и добавьте следующую строку в ConfigureServices в Startup.cs
services.AddMvcLocalization();
Я получаю новую ошибку при выполнении следующего кода.
public class HomeController : Controller
{
private readonly IHtmlLocalizer _localizer;
public HomeController(IHtmlLocalizer<HomeController> localizer)
{
_localizer = localizer;
}
....
Ошибка:
При обработке запроса произошла необработанная ошибка.
InvalidOperationException: невозможно разрешить службу для типа "Microsoft.Framework.Runtime.IApplicationEnvironment" при попытке активировать 'Microsoft.Framework.Localization.ResourceManagerStringLocalizerFactory. Microsoft.Framework.DependencyInjection.ServiceLookup.Service.CreateCallSite(ServiceProvider провайдер, ISet`1 callSiteChain)
Невозможно выяснить, есть ли у меня зависимость, которую я потерял, или есть проблема в коде
Изменить 3:
Кому все еще нужно найти решение. На данный момент вы можете использовать код в ответе Muhammad Rehan Saee, чтобы получить поддержку локализации в вашем CSHTML. Однако история включения локализации в атрибуты проверки еще не выполнена (на момент редактирования: 08/Sep/2015) Посмотрите этот вопрос на сайте GITHUB для mvc ниже:
https://github.com/aspnet/Mvc/issues/2766#issuecomment-137192942
PS: Чтобы исправить исключение InvalidOperationException, я сделал следующее
Взятие всех зависимостей в качестве бета7- * и очистка всего содержимого моих пакетов C:\Users \.dnx\избавились от этой ошибки.
Подробности по проблеме, которую я поднял:
https://github.com/aspnet/Mvc/issues/2893#issuecomment-127164729
Изменить: 25/Dec/2015
Теперь он наконец работает в MVC 6.
Написал быстрый блог: http://pratikvasani.github.io/archive/2015/12/25/MVC-6-localization-how-to/