在我的 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);
}
}
我面临的问题是,当 HandleErrorAttribute 从 SiteController 类级别属性启动时,这些值没有传递给 MyErrorView(最终是 Site.Master)。这是一个简单的场景来显示我的问题:
public class TestingController : SiteController
{
public ActionResult DoSomething()
{
throw new MyException("pwnd!");
}
}
我也尝试通过覆盖 SiteController 中的 OnException() 方法来填充 ViewData 参数,但无济于事。:(
在这种情况下,将 ViewData 参数传递给我的 Site.Master 的最佳方法是什么?