Accessing BaseViewModel Data in _Layout.cshtml using Global ActionFilters
I am trying to access BaseViewModel data in _Layout.cshtml using global action filter.
I am able to access baseviewmodel data in HomeController but not in the AccountController. I am getting a NullReferenceException in the below line.
baseViewModel.SiteName = siteSettings.SiteName;
All my viewmodel class are inheriting from the baseviewmodel class.
I am using the correct override? Should I use OnActionExexcuting or OnResultExecuting?
Please guide me.
public class LoadSiteSettingsAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if(filterContext.Result is ViewResult)
{
var baseViewModel = filterContext.Controller.ViewData.Model as BaseViewModel;
SiteSettingsService siteSettingsService = new SiteSettingsService();
var siteSettings = siteSettingsService.GetSiteSettings(1);
baseViewModel.SiteName = siteSettings.SiteName;
baseViewModel.IsRegister = siteSettings.IsRegister;
baseViewModel.SiteFooter = siteSettings.SiteFooter;
baseViewModel.LogoURL = siteSettings.LogoURL;
baseViewModel.FaviconURL = siteSettings.FaviconURL;
baseViewModel.IsDNSPrefetchOn = siteSettings.IsDNSPrefetchOn;
baseViewModel.SiteAuthor = siteSettings.SiteAuthor;
baseViewModel.DNSPrefetch = siteSettings.DNSPrefetch;
baseViewModel.DNSPreconnect = siteSettings.DNSPreconnect;
baseViewModel.GoogleSiteVerification = siteSettings.GoogleSiteVerification;
baseViewModel.GoogleAnalytics = siteSettings.GoogleAnalytics;
baseViewModel.CustomCSS = siteSettings.CustomCSS;
baseViewModel.CustomJavaScript = siteSettings.CustomJavaScript;
baseViewModel.IsUnderMaintenance = siteSettings.IsUnderMaintenance;
}
}
}