В моем файле Site.Master у меня есть 3 простых параметра ViewData (всего 3 в моем решении). Эти значения ViewData имеют решающее значение для каждой отдельной страницы моего приложения. Поскольку эти значения используются на моем Site.Master, я создал абстрактный класс SiteController, который переопределяет метод OnActionExecuting, чтобы заполнить эти значения для каждого метода Action на каждом контроллере в моем решении.
[HandleError(ExceptionType=typeof(MyException), View="MyErrorView")]
public abstract class SiteController : Controller
{
protected override void OnActionExecuting(...)
{
ViewData["Theme"] = "BlueTheme";
ViewData["SiteName"] = "Company XYZ Web Portal";
ViewData["HeaderMessage"] = "Some message...";
base.OnActionExecuting(filterContext);
}
}
Проблема, с которой я столкнулась, заключается в том, что эти значения не передаются в MyErrorView (и, в конечном счете, Site.Master), когда HandleErrorAttribute запускается из атрибута уровня класса SiteController. Вот простой сценарий, чтобы показать мою проблему:
public class TestingController : SiteController
{
public ActionResult DoSomething()
{
throw new MyException("pwnd!");
}
}
Я пробовал заполнять параметры ViewData, переопределяя метод OnException() в моем SiteController, но безрезультатно.: (
Каков наилучший способ передать параметры ViewData на моем Site.Master в этом случае?