У меня есть пользовательский базовый класс вида бритвы, у которого есть свойство для службы, зависящей от локализации, которая внедряется с Unity через внедрение свойства.
Если я использую свойство в представлении, свойство правильно разрешается,Но если я попытаюсь использовать одно и то же свойство в макете (главной странице), это свойство еще не устанавливается.
Может кто-нибудь объяснить, как представления обрабатываются и компилируются до того, как Unity пытается разрешить представление и внедрить зависимости.
Я пытаюсь установить заголовок каждого представления, используя соглашение [ViewName.Title] и поиск службы локализации, который прекрасно работает в View, но я не хочу повторять его в каждом View.У меня есть чувство, чтобы переместить логику в _ViewStart.cshtml, но ViewBag или моя служба локализации там недоступны.
Базовый класс:
public abstract class LocalizeBaseWebViewPage<TModel> : WebViewPage<TModel>
{
[Microsoft.Practices.Unity.Dependency]
public ILocalizationService LocalizationService { get; set; }
public virtual string Localize(string key)
{
return LocalizationService.GetResource(key);
}
}
Это работает в Index.cshtml
@{
ViewBag.Title = Localize("Title");
Layout = "~/Views/Shared/_Layout.cshtml";
}
Но не в _Layout.cshtml, поскольку для службы не установлена ссылка на объект.
@{
ViewBag.Title = Localize("Title");
}