I am using an Translator object (custom class) to expose website texts (the object stores texts from the database). The Translator object is stored in the cache, in the Application_Start() function.
My current use of the Translator object is:
I have a MasterViewModel
public class MasterViewModel { public Translator Translator = HttpContext.Current.Cache.Get("Translator") as Translator; }
Every view has a viewmodel, that inherents from MasterViewModel
public class RandomViewModel : MasterViewModel { }
In my views i can use my Translator object
@model ViewModels.RandomViewModel @Model.Translator.GetText(label)
I don't think this is a nice aproach. Is it a good idea to make a razor helper in App_Code, so that in my views i can use
@Translate.GetText("RANDOM_TEXT")
This will be the Helper function (in Translate.cshtml)
@helper GetText(string label)
{
Translator Translator = @Cache.Get("Translator") as Translator;
@: Translator.GetTextByLabel(label);
}
So my question is what is the best way of exposing a cached object to all my views. Is one of the above approaches good? Or should i go with another solution?
(I hope my english is okay, i am dutch)