私の Site.Master ファイルには、3 つの単純な ViewData パラメーターがあります (ソリューション全体で 3 つだけです)。これらの ViewData 値は、アプリケーションのすべてのページにとって重要です。これらの値は Site.Master で使用されるため、OnActionExecuting メソッドをオーバーライドして、ソリューション内のすべてのコントローラーのすべての Action メソッドにこれらの値を入力する抽象 SiteController クラスを作成しました。
[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);
}
}
私が直面している問題は、HandleErrorAttribute が SiteController クラス レベルの属性から開始されたときに、これらの値が MyErrorView (および最終的には Site.Master) に渡されないことです。私の問題を示す簡単なシナリオを次に示します。
public class TestingController : SiteController
{
public ActionResult DoSomething()
{
throw new MyException("pwnd!");
}
}
SiteController の OnException() メソッドもオーバーライドして ViewData パラメータを埋めようとしましたが、うまくいきませんでした。:(
この場合、ViewData パラメータを Site.Master に渡す最良の方法は何ですか?