Wewnątrz widoku asp.net mvc można uzyskać dostęp do modelu zwróconego wraz z widokiem.
Jeśli nie jesteś w samym widoku, ale inna metoda jest uruchamiana po zakończeniu metody kontrolera, jaka metoda [statyczna?] Jest dostępna, aby uzyskać renderowanie bieżącego modelu bieżącego widoku?
Mogę uzyskać dostęp do wszystkich standardowych obiektów: sesji, żądania, odpowiedzi itp.
Pracowałem nad tym, ładując zmienną Session, ale nie podoba mi się używanie session, jeśli framework już ją zawiera.
Odpowiedzi:
0 dla odpowiedzi № 1Możesz utworzyć filtr akcji, który będzie wykonywany w potoku żądań MVC. Jeśli chcesz wykonać jakiś kod po wykonaniu metody akcji, możesz przesłonić OnActionExecuted
metoda.
public class MyCustom : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var viewModel = filterContext.Controller.ViewData.Model;
var response = filterContext.HttpContext.Response;
var viewBag = filterContext.Controller.ViewBag;
// Use any of these as needed
base.OnActionExecuted(filterContext);
}
}
Jeśli chcesz tego dla wszystkich żądań, możesz zarejestrować ten filtr w kolekcji GlobalFilters w RegisterRoutes
metoda.
GlobalFilters.Filters.Add(new MyCustom());