/ / Jak uzyskać model widoku poza widokiem - asp.net-mvc

Jak uzyskać model widoku poza widokiem - asp.net-mvc

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 № 1

Moż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());