私のSite.Masterファイルには、3つのシンプルなViewDataパラメータがあります(私のソリューション全体では3つしかありません)。これらのViewData値は、アプリケーションのすべての単一ページで重要です。これらの値は私のSite.Masterで使用されているので、OnActionExecutingメソッドをオーバーライドする抽象的なSiteControllerクラスを作成して、私のソリューションのすべてのコントローラ上のすべてのActionメソッドに対してこれらの値を設定します。ViewDataをHandleError Viewに渡すにはどうすればよいですか?
[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!");
}
}
私も私のSiteControllerでonExceptionを()メソッドをオーバーライドしてViewDataをパラメータを充填しようとしたが、無駄にしました。 :(
この場合には、私のSite.MasterにViewDataをパラメータを渡すための最良の方法は何ですか?
うわー、これは私はそれが可能だろうと思ったよりも多く複雑でした。 :)私はそれを理解するためにそれを見てきたし、あなたがやっていること、なぜそれをやっているのかを完全に理解する。ご回答有難うございます! – Luc
これは実際には機能しません... – fearofawhackplanet
「機能しません」は特に有用ではありません。私は私と他の人のためにやった。使用しているMVCのバージョンを確認する必要があります。私は多くの変更があったと確信しています。 –