Question

I need to obtain my viewmodel from the class ControllerContext. I need to read some poperty of the viewmodel ControllerContext. How can i do this??

using System;
using System.Web;
using System.Web.Routing;
using System.Web.WebPages;

namespace System.Web.Mvc
{
    // Summary:
    //     Encapsulates information about an HTTP request that matches specified System.Web.Routing.RouteBase
    //     and System.Web.Mvc.ControllerBase instances.
    public class ControllerContext
    {
        // Summary:
        //     Initializes a new instance of the System.Web.Mvc.ControllerContext class.
        public ControllerContext();
        //
        // Summary:
        //     Initializes a new instance of the System.Web.Mvc.ControllerContext class
        //     by using the specified controller context.
        //
        // Parameters:
        //   controllerContext:
        //     The controller context.
        //
        // Exceptions:
        //   System.ArgumentNullException:
        //     The controllerContext parameter is null.
        protected ControllerContext(ControllerContext controllerContext);
        //
        // Summary:
        //     Initializes a new instance of the System.Web.Mvc.ControllerContext class
        //     by using the specified request context and controller.
        //
        // Parameters:
        //   requestContext:
        //     The request context.
        //
        //   controller:
        //     The controller.
        //
        // Exceptions:
        //   System.ArgumentNullException:
        //     One or both parameters are null.
        public ControllerContext(RequestContext requestContext, ControllerBase controller);
        //
        // Summary:
        //     Initializes a new instance of the System.Web.Mvc.ControllerContext class
        //     by using the specified HTTP context, URL route data, and controller.
        //
        // Parameters:
        //   httpContext:
        //     The HTTP context.
        //
        //   routeData:
        //     The route data.
        //
        //   controller:
        //     The controller.
        public ControllerContext(HttpContextBase httpContext, RouteData routeData, ControllerBase controller);

        // Summary:
        //     Gets or sets the controller.
        //
        // Returns:
        //     The controller.
        public virtual ControllerBase Controller { get; set; }
        //
        // Summary:
        //     Gets the display mode.
        //
        // Returns:
        //     The display mode.
        public IDisplayMode DisplayMode { get; set; }
        //
        // Summary:
        //     Gets or sets the HTTP context.
        //
        // Returns:
        //     The HTTP context.
        public virtual HttpContextBase HttpContext { get; set; }
        //
        // Summary:
        //     Gets a value that indicates whether the associated action method is a child
        //     action.
        //
        // Returns:
        //     true if the associated action method is a child action; otherwise, false.
        public virtual bool IsChildAction { get; }
        //
        // Summary:
        //     Gets an object that contains the view context information for the parent
        //     action method.
        //
        // Returns:
        //     An object that contains the view context information for the parent action
        //     method.
        public ViewContext ParentActionViewContext { get; }
        //
        // Summary:
        //     Gets or sets the request context.
        //
        // Returns:
        //     The request context.
        public RequestContext RequestContext { get; set; }
        //
        // Summary:
        //     Gets or sets the URL route data.
        //
        // Returns:
        //     The URL route data.
        public virtual RouteData RouteData { get; set; }
    }
}
Était-ce utile?

La solution

Try:

ControllerContext.Controller.ViewData.Model

It's not clear when exactly you need to fetch that data from the context, but you have to realize that the ViewModel returned to the View is only available after the OnResultExecuting event (same method on ActionFilter as well).

Autres conseils

Assuming I understand the question, you can access properties of the ControllerContext with the dot notation:

ControllerContext.<PropertyName>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top