Próbuję utworzyć ActionFilter w aspnet vNext. W ramach tego filtra Chcę, aby uzyskać dostęp do TempData i ViewData (oba dostępne w kontrolerze w poprzednich wersjach) .I zastąpić metodę public override void OnActionExecuting(ActionExecutingContext filterContext)
aspnet vNext ActionFilter i TempData
Into the filterContext
Mam kontroler ale jest object
zamiast ControllerBase
. Oczekiwano mnie od ControllerBase
, ponieważ w poprzednich wersjach MVC ControllerContext
(podstawowa klasa ActionExecutingContext
) był ControllerBase
, here jest kodem źródłowym w codeplex. Rozumiem, że może to być spowodowane kontrolerami POCO.
Pytanie brzmi, jak uzyskać dostęp do TempData i ViewData, jeśli kontroler jest obiektem. Po prostu robi downcasting (coś podobnego do tego (Controller)filterContext.Controller
) lub jest najlepszy sposób, aby to zrobić.
Aktualizacja
Że chcę osiągnąć, jeśli to wyjaśnić w this blog post ale z aspnet 5.
Czy możesz podać więcej szczegółów, co jest scenariusz, który staramy się osiągnąć? Do 'TempData' można uzyskać dostęp poprzez usługę" ITempDataDictionary "z DI. Jeśli chodzi o 'ViewData', prawdopodobnie zależy to od scenariusza ... jeśli zwiążesz żądanie, możesz samodzielnie utworzyć' ViewDataDictionary' i na przykład ustawić właściwość 'ViewData' na' ViewResult'. Lub jeśli chcesz po prostu chcieć dodać dane do 'ViewData', do którego działanie kontrolera dodaje więcej danych, wtedy wierzę, że rzucanie w dół jest w porządku. –
Chcę ustawić dane na później na następne żądanie. Jako konkretny przykład chcę osiągnąć to samo, co wyjaśniono w [tym blogu] (http://benfoster.io/blog/automatic-modelstate-validation-in-aspnet-mvc). Zamierzam dodać te informacje w pytaniu. – vfabre
@KiranChalla, myślę, że twój komentarz jest anwser na moje pytanie.Będę używał wtrysku zależności. Czy możesz napisać odpowiedź jako odpowiedź? – vfabre