Nel mio file Site.Master, ho 3 semplici parametri ViewData (gli unici 3 nella mia intera soluzione). Questi valori di ViewData sono fondamentali per ogni singola pagina nella mia applicazione. Poiché questi valori sono utilizzati nel mio Site.Master, ho creato una classe SiteController astratta che sovrascrive il metodo OnActionExecuting per riempire questi valori per ogni metodo Action su ogni controller della mia soluzione.Come si passa ViewData a una vista HandleError?
[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);
}
}
Il problema che sto affrontando è che questi valori non vengono passati a MyErrorView (e in definitiva Site.master) quando il HandleErrorAttribute calci dall'attributo livello di classe SiteController. Ecco uno scenario semplice per mostrare il mio problema:
public class TestingController : SiteController
{
public ActionResult DoSomething()
{
throw new MyException("pwnd!");
}
}
Ho provato riempiendo i parametri viewdata sovrascrivendo il metodo OnException() nel mio SiteController pure, ma senza alcun risultato. :(
Qual è il modo migliore per passare i parametri viewdata al mio Site.master in questo caso?
Wow, questo è stato molto più complesso di quanto ho pensato che sarebbe stato. :) L'ho esaminato per capirlo e ha perfettamente senso per quello che stai facendo e perché lo stai facendo. Grazie per la tua risposta! – Luc
questo non funziona ... – fearofawhackplanet
"non funziona" non è particolarmente utile. Ho fatto per me e gli altri. Dovresti controllare la versione MVC che stai utilizzando poiché sono sicuro che molto è cambiato. –